Diff
Modified: trunk/LayoutTests/ChangeLog (110731 => 110732)
--- trunk/LayoutTests/ChangeLog 2012-03-14 19:48:06 UTC (rev 110731)
+++ trunk/LayoutTests/ChangeLog 2012-03-14 19:50:28 UTC (rev 110732)
@@ -1,3 +1,16 @@
+2012-03-14 Simon Fraser <[email protected]>
+
+ background-visibility:hidden should create a RenderLayer
+ https://bugs.webkit.org/show_bug.cgi?id=81134
+
+ Reviewed by Dean Jackson.
+
+ Test for background-visibility: hidden making a RenderLayer.
+
+ * transforms/3d/general/background-visibility-layers-actual.png: Added.
+ * transforms/3d/general/background-visibility-layers-actual.txt: Added.
+ * transforms/3d/general/background-visibility-layers.html: Added.
+
2012-03-14 Raul Hudea <[email protected]>
[CSSRegions][CSSOM] Implement regionLayoutEvent
Added: trunk/LayoutTests/transforms/3d/general/background-visibility-layers-actual.png
(Binary files differ)
Property changes on: trunk/LayoutTests/transforms/3d/general/background-visibility-layers-actual.png
___________________________________________________________________
Added: svn:mime-type
Added: trunk/LayoutTests/transforms/3d/general/background-visibility-layers-actual.txt (0 => 110732)
--- trunk/LayoutTests/transforms/3d/general/background-visibility-layers-actual.txt (rev 0)
+++ trunk/LayoutTests/transforms/3d/general/background-visibility-layers-actual.txt 2012-03-14 19:50:28 UTC (rev 110732)
@@ -0,0 +1,9 @@
+layer at (0,0) size 800x600
+ RenderView at (0,0) size 800x600
+layer at (0,0) size 800x116
+ RenderBlock {HTML} at (0,0) size 800x116
+ RenderBody {BODY} at (8,8) size 784x100
+layer at (8,8) size 100x100
+ RenderBlock {DIV} at (0,0) size 100x100 [bgcolor=#008000]
+layer at (8,8) size 100x100
+ RenderBlock {DIV} at (0,0) size 100x100 [bgcolor=#FF0000]
Property changes on: trunk/LayoutTests/transforms/3d/general/background-visibility-layers-actual.txt
___________________________________________________________________
Added: svn:mime-type
Added: svn:keywords
Added: svn:eol-style
Added: trunk/LayoutTests/transforms/3d/general/background-visibility-layers.html (0 => 110732)
--- trunk/LayoutTests/transforms/3d/general/background-visibility-layers.html (rev 0)
+++ trunk/LayoutTests/transforms/3d/general/background-visibility-layers.html 2012-03-14 19:50:28 UTC (rev 110732)
@@ -0,0 +1,5 @@
+<!DOCTYPE html>
+<style>div { width: 100px; height: 100px } </style>
+<div style="-webkit-transform: rotateX(180deg); -webkit-transform-style: preserve-3d; background: green">
+ <div style="-webkit-backface-visibility: hidden; background: red;"></div>
+</div>
Property changes on: trunk/LayoutTests/transforms/3d/general/background-visibility-layers.html
___________________________________________________________________
Added: svn:mime-type
Added: svn:keywords
Added: svn:eol-style
Modified: trunk/Source/WebCore/ChangeLog (110731 => 110732)
--- trunk/Source/WebCore/ChangeLog 2012-03-14 19:48:06 UTC (rev 110731)
+++ trunk/Source/WebCore/ChangeLog 2012-03-14 19:50:28 UTC (rev 110732)
@@ -1,3 +1,22 @@
+2012-03-14 Simon Fraser <[email protected]>
+
+ background-visibility:hidden should create a RenderLayer
+ https://bugs.webkit.org/show_bug.cgi?id=81134
+
+ Reviewed by Dean Jackson.
+
+ Background-visibility:hidden has to create RenderLayers, because it's implemented
+ via compositing and/or paint short-circuiting in RenderLayer code.
+
+ Test: transforms/3d/general/background-visibility-layers.html
+
+ * rendering/RenderBox.h:
+ * rendering/RenderBoxModelObject.h:
+ (WebCore::RenderBoxModelObject::requiresLayer):
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::hasHiddenBackface):
+ * rendering/RenderTableRow.h:
+
2012-03-14 Raul Hudea <[email protected]>
[CSSRegions][CSSOM] Implement regionLayoutEvent
Modified: trunk/Source/WebCore/rendering/RenderBox.h (110731 => 110732)
--- trunk/Source/WebCore/rendering/RenderBox.h 2012-03-14 19:48:06 UTC (rev 110731)
+++ trunk/Source/WebCore/rendering/RenderBox.h 2012-03-14 19:50:28 UTC (rev 110732)
@@ -42,7 +42,7 @@
RenderBox(Node*);
virtual ~RenderBox();
- virtual bool requiresLayer() const OVERRIDE { return isRoot() || isPositioned() || isRelPositioned() || isTransparent() || requiresLayerForOverflowClip() || hasTransform() || hasMask() || hasReflection() || hasFilter() || style()->specifiesColumns(); }
+ virtual bool requiresLayer() const OVERRIDE { return isRoot() || isPositioned() || isRelPositioned() || isTransparent() || requiresLayerForOverflowClip() || hasTransform() || hasHiddenBackface() || hasMask() || hasReflection() || hasFilter() || style()->specifiesColumns(); }
bool requiresLayerForOverflowClip() const;
bool hasOverflowClipWithLayer() const { return hasOverflowClip() && hasLayer(); }
Modified: trunk/Source/WebCore/rendering/RenderBoxModelObject.h (110731 => 110732)
--- trunk/Source/WebCore/rendering/RenderBoxModelObject.h 2012-03-14 19:48:06 UTC (rev 110731)
+++ trunk/Source/WebCore/rendering/RenderBoxModelObject.h 2012-03-14 19:50:28 UTC (rev 110732)
@@ -74,7 +74,7 @@
bool hasSelfPaintingLayer() const;
RenderLayer* layer() const { return m_layer; }
- virtual bool requiresLayer() const { return isRoot() || isPositioned() || isRelPositioned() || isTransparent() || hasTransform() || hasMask() || hasReflection() || hasFilter() || style()->specifiesColumns(); }
+ virtual bool requiresLayer() const { return isRoot() || isPositioned() || isRelPositioned() || isTransparent() || hasTransform() || hasHiddenBackface() || hasMask() || hasReflection() || hasFilter() || style()->specifiesColumns(); }
// This will work on inlines to return the bounding box of all of the lines' border boxes.
virtual LayoutRect borderBoundingBox() const = 0;
Modified: trunk/Source/WebCore/rendering/RenderObject.h (110731 => 110732)
--- trunk/Source/WebCore/rendering/RenderObject.h 2012-03-14 19:48:06 UTC (rev 110731)
+++ trunk/Source/WebCore/rendering/RenderObject.h 2012-03-14 19:50:28 UTC (rev 110732)
@@ -502,6 +502,7 @@
bool hasTransform() const { return m_bitfields.hasTransform(); }
bool hasMask() const { return style() && style()->hasMask(); }
+ bool hasHiddenBackface() const { return style() && style()->backfaceVisibility() == BackfaceVisibilityHidden; }
#if ENABLE(CSS_FILTERS)
bool hasFilter() const { return style() && style()->hasFilter(); }
Modified: trunk/Source/WebCore/rendering/RenderTableRow.h (110731 => 110732)
--- trunk/Source/WebCore/rendering/RenderTableRow.h 2012-03-14 19:48:06 UTC (rev 110731)
+++ trunk/Source/WebCore/rendering/RenderTableRow.h 2012-03-14 19:50:28 UTC (rev 110732)
@@ -58,7 +58,7 @@
virtual bool nodeAtPoint(const HitTestRequest&, HitTestResult&, const LayoutPoint& pointInContainer, const LayoutPoint& accumulatedOffset, HitTestAction);
// We need to allocate a layer whenever we have an overflow clip as RenderTableSection::paintObject does not push rows' clips.
- virtual bool requiresLayer() const OVERRIDE { return isTransparent() || hasOverflowClip() || hasTransform() || hasMask() || hasFilter(); }
+ virtual bool requiresLayer() const OVERRIDE { return isTransparent() || hasOverflowClip() || hasTransform() || hasHiddenBackface() || hasMask() || hasFilter(); }
virtual void paint(PaintInfo&, const LayoutPoint&);