Title: [110732] trunk
Revision
110732
Author
[email protected]
Date
2012-03-14 12:50:28 -0700 (Wed, 14 Mar 2012)

Log Message

background-visibility:hidden should create a RenderLayer
https://bugs.webkit.org/show_bug.cgi?id=81134

Source/WebCore:

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:

LayoutTests:

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.

Modified Paths

Added Paths

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&);
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to