Title: [120843] branches/chromium/1180
Revision
120843
Author
[email protected]
Date
2012-06-20 11:36:40 -0700 (Wed, 20 Jun 2012)

Log Message

Merge 120750 - Fix scrollbar layers being misplaced with a clipped owner layer
https://bugs.webkit.org/show_bug.cgi?id=89486

Reviewed by Simon Fraser.

Source/WebCore:

Scrollbar layers are positioned relative to their parent layer. If
that parent gets clipped, then that positioning becomes incorrect and
scrollbars get positioned relative to the clipped bounds instead of
the full bounds. Fix by not clipping in this case.

Test: compositing/overflow/scrollbars-with-clipped-owner.html

* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::shouldClipCompositedBounds):

LayoutTests:

* compositing/overflow/scrollbars-with-clipped-owner-expected.png: Added.
* compositing/overflow/scrollbars-with-clipped-owner-expected.txt: Added.
* compositing/overflow/scrollbars-with-clipped-owner.html: Added.


[email protected]
Review URL: https://chromiumcodereview.appspot.com/10536221

Modified Paths

Added Paths

Diff

Copied: branches/chromium/1180/LayoutTests/compositing/overflow/scrollbars-with-clipped-owner-expected.png (from rev 120750, trunk/LayoutTests/compositing/overflow/scrollbars-with-clipped-owner-expected.png) (0 => 120843)


--- branches/chromium/1180/LayoutTests/compositing/overflow/scrollbars-with-clipped-owner-expected.png	                        (rev 0)
+++ branches/chromium/1180/LayoutTests/compositing/overflow/scrollbars-with-clipped-owner-expected.png	2012-06-20 18:36:40 UTC (rev 120843)
@@ -0,0 +1,6 @@
+\x89PNG
+
+
+IHDR X')tEXtchecksume6569751cdaedb5052c93328d11da15f\xD09!BIDATx\x9C\xED\xD8\xC1q\xC2PAp)BA\x99Id\x862!9\x84\xBB\xCF{xǩ\xBD^.\xFBX\xD7\xC7\xF1\xE3eY޷\xFE޶mǏ޷\xE0X1\x81X1\x81X1\x81X1\x81X1\x81X1\x81\x9BF\xE04\xE6y=\xCE\xC1 &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b 6\x8Dp\xCF\xE7\xF3\xF8\xB1@L`\xC4@L`\xC4@L`\xC4@L`\xC4@L`\xC4@L`\xC4@L`\xC4@L`\xC4@L`\xC4@L`\xC4@L`\xC4@L`\xC4@L`Ħu}\x8C\xDE\xF0\x85\xE6y=\xA1w\xBF\xDFGO\x80s\xF0\xC1\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80ش,\xCB\xE8
+_\xC5 &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b v\xDD\xF7}\xF4\x80O\xB7m\xDB\xF1c,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88]_\xAF\xD7\xE8
+\x9F\xEEv\xBB?\xF6\xC1\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\xD8/\xFA\xDD\xAEU\xD9͕IEND\xAEB`\x82
\ No newline at end of file

Copied: branches/chromium/1180/LayoutTests/compositing/overflow/scrollbars-with-clipped-owner-expected.txt (from rev 120750, trunk/LayoutTests/compositing/overflow/scrollbars-with-clipped-owner-expected.txt) (0 => 120843)


--- branches/chromium/1180/LayoutTests/compositing/overflow/scrollbars-with-clipped-owner-expected.txt	                        (rev 0)
+++ branches/chromium/1180/LayoutTests/compositing/overflow/scrollbars-with-clipped-owner-expected.txt	2012-06-20 18:36:40 UTC (rev 120843)
@@ -0,0 +1 @@
+

Copied: branches/chromium/1180/LayoutTests/compositing/overflow/scrollbars-with-clipped-owner.html (from rev 120750, trunk/LayoutTests/compositing/overflow/scrollbars-with-clipped-owner.html) (0 => 120843)


--- branches/chromium/1180/LayoutTests/compositing/overflow/scrollbars-with-clipped-owner.html	                        (rev 0)
+++ branches/chromium/1180/LayoutTests/compositing/overflow/scrollbars-with-clipped-owner.html	2012-06-20 18:36:40 UTC (rev 120843)
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html>
+  <head>
+    <style>
+      body {
+        margin: 0px;
+        overflow:hidden;
+      }
+
+      #outer-scrollable {
+        position: absolute;
+        top: 0px;
+        left: 0px;
+        right: 0px;
+        bottom: 0px;
+        overflow: scroll;
+      }
+
+      #tall {
+        height: 1000px;
+      }
+
+      #inner-scrollable {
+        position: relative;
+        overflow: auto;
+        width: 200px;
+        height: 200px;
+        z-index: 0;
+      }
+
+      #content {
+        width: 300px;
+        height: 300px;
+        background-color: blue;
+        margin: 0px;
+        -webkit-transform:translateZ(0);
+      }
+    </style>
+    <script>
+      function doTest() {
+        if (window.testRunner)
+          testRunner.dumpAsText(true);
+
+        // This test succeeds if the scrollbars on the inner-scrollable
+        // are positioned properly.
+        var scroller = document.getElementById("outer-scrollable");
+        scroller.scrollTop = 100;
+      }
+      window.addEventListener("load", doTest, false);
+    </script>
+  </head>
+  <body>
+    <div id="outer-scrollable">
+      <div id="tall">
+        <div id="inner-scrollable">
+          <div id="content"></div>
+        </div>
+      </div>
+    </div>
+  </body>
+</html>

Modified: branches/chromium/1180/Source/WebCore/rendering/RenderLayerBacking.cpp (120842 => 120843)


--- branches/chromium/1180/Source/WebCore/rendering/RenderLayerBacking.cpp	2012-06-20 18:28:05 UTC (rev 120842)
+++ branches/chromium/1180/Source/WebCore/rendering/RenderLayerBacking.cpp	2012-06-20 18:36:40 UTC (rev 120843)
@@ -244,6 +244,10 @@
 
 bool RenderLayerBacking::shouldClipCompositedBounds() const
 {
+    // Scrollbar layers use this layer for relative positioning, so don't clip.
+    if (layerForHorizontalScrollbar() || layerForVerticalScrollbar())
+        return false;
+
     if (m_usingTiledCacheLayer)
         return true;
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to