Title: [91597] trunk
- Revision
- 91597
- Author
- e...@google.com
- Date
- 2011-07-22 12:52:52 -0700 (Fri, 22 Jul 2011)
Log Message
Fix repainting of composited fixed position elements in iframes
https://bugs.webkit.org/show_bug.cgi?id=64010
Reviewed by Simon Fraser.
Source/WebCore:
In cases where an iframe's contents have their own graphics layer, the
invalidation during scrolling was being sent to the wrong render
layer. Fixed by checking if such a layer exists and routing scrolling
invalidations there first.
* page/FrameView.cpp:
(WebCore::FrameView::scrollContentsSlowPath):
LayoutTests:
* compositing/iframes/fixed-position-iframe-expected.png: Added.
* compositing/iframes/fixed-position-iframe-expected.txt: Added.
* compositing/iframes/fixed-position-iframe.html: Added.
* compositing/iframes/resources/fixed-position-subframe.html: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (91596 => 91597)
--- trunk/LayoutTests/ChangeLog 2011-07-22 19:47:58 UTC (rev 91596)
+++ trunk/LayoutTests/ChangeLog 2011-07-22 19:52:52 UTC (rev 91597)
@@ -1,3 +1,15 @@
+2011-07-21 Adrienne Walker <e...@google.com>
+
+ Fix repainting of composited fixed position elements in iframes
+ https://bugs.webkit.org/show_bug.cgi?id=64010
+
+ Reviewed by Simon Fraser.
+
+ * compositing/iframes/fixed-position-iframe-expected.png: Added.
+ * compositing/iframes/fixed-position-iframe-expected.txt: Added.
+ * compositing/iframes/fixed-position-iframe.html: Added.
+ * compositing/iframes/resources/fixed-position-subframe.html: Added.
+
2011-07-22 Sam Weinig <s...@webkit.org>
Update results after change to make columns and column-span establish
Added: trunk/LayoutTests/compositing/iframes/fixed-position-iframe-expected.png
(Binary files differ)
Property changes on: trunk/LayoutTests/compositing/iframes/fixed-position-iframe-expected.png
___________________________________________________________________
Added: svn:mime-type
Added: trunk/LayoutTests/compositing/iframes/fixed-position-iframe-expected.txt (0 => 91597)
--- trunk/LayoutTests/compositing/iframes/fixed-position-iframe-expected.txt (rev 0)
+++ trunk/LayoutTests/compositing/iframes/fixed-position-iframe-expected.txt 2011-07-22 19:52:52 UTC (rev 91597)
@@ -0,0 +1 @@
+
Property changes on: trunk/LayoutTests/compositing/iframes/fixed-position-iframe-expected.txt
___________________________________________________________________
Added: svn:eol-style
Added: trunk/LayoutTests/compositing/iframes/fixed-position-iframe.html (0 => 91597)
--- trunk/LayoutTests/compositing/iframes/fixed-position-iframe.html (rev 0)
+++ trunk/LayoutTests/compositing/iframes/fixed-position-iframe.html 2011-07-22 19:52:52 UTC (rev 91597)
@@ -0,0 +1,18 @@
+<html>
+<head>
+<style>
+ iframe {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ border-width: 0px;
+ }
+</style>
+</head>
+<body>
+ <!-- this test should only show green -->
+ <iframe id="iframe" src=""
+</body>
+</html>
Property changes on: trunk/LayoutTests/compositing/iframes/fixed-position-iframe.html
___________________________________________________________________
Added: svn:eol-style
Added: trunk/LayoutTests/compositing/iframes/resources/fixed-position-subframe.html (0 => 91597)
--- trunk/LayoutTests/compositing/iframes/resources/fixed-position-subframe.html (rev 0)
+++ trunk/LayoutTests/compositing/iframes/resources/fixed-position-subframe.html 2011-07-22 19:52:52 UTC (rev 91597)
@@ -0,0 +1,39 @@
+<html>
+<head>
+<style>
+ body {
+ height: 5000px;
+ background-color: red;
+ overflow: hidden;
+ }
+
+ #trigger {
+ -webkit-transform:translateZ(0);
+ }
+
+ #overlap {
+ width: 1000px;
+ height: 1000px;
+ background-color: green;
+ position: fixed;
+ left: 0px;
+ top: 0px;
+ }
+</style>
+</head>
+<script>
+ function doTest() {
+ if (window.layoutTestController)
+ layoutTestController.dumpAsText(true);
+ window.scrollTo(0, 2000);
+ if (window.layoutTestController)
+ layoutTestController.display();
+ window.scrollTo(0, 1800);
+ }
+ window.addEventListener("load", doTest, false);
+</script>
+<body>
+ <div id="trigger"></div>
+ <div id="overlap"></div>
+</body>
+</html>
Property changes on: trunk/LayoutTests/compositing/iframes/resources/fixed-position-subframe.html
___________________________________________________________________
Added: svn:eol-style
Modified: trunk/Source/WebCore/ChangeLog (91596 => 91597)
--- trunk/Source/WebCore/ChangeLog 2011-07-22 19:47:58 UTC (rev 91596)
+++ trunk/Source/WebCore/ChangeLog 2011-07-22 19:52:52 UTC (rev 91597)
@@ -1,3 +1,18 @@
+2011-07-21 Adrienne Walker <e...@google.com>
+
+ Fix repainting of composited fixed position elements in iframes
+ https://bugs.webkit.org/show_bug.cgi?id=64010
+
+ Reviewed by Simon Fraser.
+
+ In cases where an iframe's contents have their own graphics layer, the
+ invalidation during scrolling was being sent to the wrong render
+ layer. Fixed by checking if such a layer exists and routing scrolling
+ invalidations there first.
+
+ * page/FrameView.cpp:
+ (WebCore::FrameView::scrollContentsSlowPath):
+
2011-07-22 Viet-Trung Luu <viettrung...@chromium.org>
Improve (i.e., speed up) .gyp(i) files for Chromium
Modified: trunk/Source/WebCore/page/FrameView.cpp (91596 => 91597)
--- trunk/Source/WebCore/page/FrameView.cpp 2011-07-22 19:47:58 UTC (rev 91596)
+++ trunk/Source/WebCore/page/FrameView.cpp 2011-07-22 19:52:52 UTC (rev 91597)
@@ -1352,6 +1352,14 @@
void FrameView::scrollContentsSlowPath(const IntRect& updateRect)
{
#if USE(ACCELERATED_COMPOSITING)
+ RenderView* root = m_frame->contentRenderer();
+ if (root && root->layer()->isComposited()) {
+ GraphicsLayer* layer = root->layer()->backing()->graphicsLayer();
+ if (layer && layer->drawsContent()) {
+ root->layer()->setBackingNeedsRepaintInRect(visibleContentRect());
+ return;
+ }
+ }
if (RenderPart* frameRenderer = m_frame->ownerRenderer()) {
if (frameRenderer->containerForRepaint()) {
IntRect rect(frameRenderer->borderLeft() + frameRenderer->paddingLeft(),
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes