[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
simon.fraser at apple.com
simon.fraser at apple.com
Wed Dec 22 15:24:39 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 3cf68b35ff07f3c4416fbe5baafe65c2b386a761
Author: simon.fraser at apple.com <simon.fraser at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Tue Nov 2 23:12:33 2010 +0000
2010-11-02 Simon Fraser <simon.fraser at apple.com>
Reviewed by Dan Bernstein.
Iframes nested inside a compositing layer don't repaint correctly
https://bugs.webkit.org/show_bug.cgi?id=48880
<rdar://problem/8194698>
The isEnclosedInCompositingLayer() is used to modify the behavior of
-[WebClipView visibleRect:] in WebKit, so that scrolling-related repaints
are correct in composited iframes. Previously it only asked whether the
frame's renderer was in a compositing layer, but we actually need to
consult all ancestors.
Test: compositing/iframes/nested-iframe-scrolling.html
* page/FrameView.cpp:
(WebCore::FrameView::isEnclosedInCompositingLayer):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@71182 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 8345dfb..0c0be6d 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,20 @@
+2010-11-02 Simon Fraser <simon.fraser at apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Iframes nested inside a compositing layer don't repaint correctly
+ https://bugs.webkit.org/show_bug.cgi?id=48880
+ <rdar://problem/8194698>
+
+ Test scrolling in a iframe in an iframe in a compositing layer.
+
+ * compositing/iframes/nested-iframe-scrolling-expected.checksum: Added.
+ * compositing/iframes/nested-iframe-scrolling-expected.png: Added.
+ * compositing/iframes/nested-iframe-scrolling-expected.txt: Added.
+ * compositing/iframes/nested-iframe-scrolling.html: Added.
+ * compositing/iframes/resources/nested-subframe.html: Added.
+ * compositing/iframes/resources/subsubframe.html: Added.
+
2010-11-02 Dmitry Titov <dimich at chromium.org>
[Chromium] Unreviewed update of test expectations.
diff --git a/LayoutTests/compositing/iframes/nested-iframe-scrolling-expected.checksum b/LayoutTests/compositing/iframes/nested-iframe-scrolling-expected.checksum
new file mode 100644
index 0000000..8860c5c
--- /dev/null
+++ b/LayoutTests/compositing/iframes/nested-iframe-scrolling-expected.checksum
@@ -0,0 +1 @@
+29a083f0933edd034a6320405824cd68
\ No newline at end of file
diff --git a/LayoutTests/compositing/iframes/nested-iframe-scrolling-expected.png b/LayoutTests/compositing/iframes/nested-iframe-scrolling-expected.png
new file mode 100644
index 0000000..dc07932
Binary files /dev/null and b/LayoutTests/compositing/iframes/nested-iframe-scrolling-expected.png differ
diff --git a/LayoutTests/compositing/iframes/nested-iframe-scrolling-expected.txt b/LayoutTests/compositing/iframes/nested-iframe-scrolling-expected.txt
new file mode 100644
index 0000000..976886c
--- /dev/null
+++ b/LayoutTests/compositing/iframes/nested-iframe-scrolling-expected.txt
@@ -0,0 +1,23 @@
+layer at (0,0) size 800x600
+ RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+ RenderBlock {HTML} at (0,0) size 800x600
+ RenderBody {BODY} at (0,0) size 800x600
+ RenderText {#text} at (0,0) size 0x0
+layer at (0,0) size 100x100
+ RenderBlock (positioned) {DIV} at (0,0) size 100x100 [bgcolor=#FF0000]
+layer at (0,0) size 320x200
+ RenderPartObject {IFRAME} at (0,0) size 320x200
+ layer at (0,0) size 320x200
+ RenderView at (0,0) size 320x200
+ layer at (0,0) size 320x200
+ RenderBlock {HTML} at (0,0) size 320x200
+ RenderBody {BODY} at (0,0) size 320x200
+ RenderPartObject {IFRAME} at (0,0) size 300x150
+ layer at (0,0) size 300x1100
+ RenderView at (0,0) size 300x150
+ layer at (0,0) size 300x1100
+ RenderBlock {HTML} at (0,0) size 300x1100
+ RenderBody {BODY} at (0,100) size 300x1000
+ RenderBlock {DIV} at (0,0) size 100x100 [bgcolor=#008000]
+ RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/compositing/iframes/nested-iframe-scrolling.html b/LayoutTests/compositing/iframes/nested-iframe-scrolling.html
new file mode 100644
index 0000000..941a232
--- /dev/null
+++ b/LayoutTests/compositing/iframes/nested-iframe-scrolling.html
@@ -0,0 +1,51 @@
+<html>
+<head>
+ <style type="text/css">
+ body {
+ margin: 0;
+ }
+ iframe {
+ width: 320px;
+ height: 200px;
+ -webkit-transform: translateZ(0);
+ border: none;
+ }
+
+ #indicator {
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ height: 100px;
+ width: 100px;
+ background-color: red;
+ }
+ </style>
+ <script type="text/javascript" charset="utf-8">
+
+ if (window.layoutTestController)
+ layoutTestController.waitUntilDone();
+
+ function runTest()
+ {
+ var frameDocument = document.getElementById('frame').contentWindow.document;
+ var subframeWindow = frameDocument.getElementById('subframe').contentWindow;
+ subframeWindow.scrollTo(0, 100);
+
+ if (window.layoutTestController)
+ layoutTestController.notifyDone();
+ }
+
+ window.addEventListener('load', function() {
+ setTimeout(runTest, 10);
+ }, false);
+
+ </script>
+</head>
+<body>
+
+<!-- In pixel results, you should see a single green square with no red. -->
+<div id="indicator"></div>
+<iframe id="frame" src="resources/nested-subframe.html"></iframe>
+
+</body>
+</html>
diff --git a/LayoutTests/compositing/iframes/resources/nested-subframe.html b/LayoutTests/compositing/iframes/resources/nested-subframe.html
new file mode 100644
index 0000000..0b37565
--- /dev/null
+++ b/LayoutTests/compositing/iframes/resources/nested-subframe.html
@@ -0,0 +1,17 @@
+<html>
+<head>
+ <style type="text/css">
+ body {
+ margin: 0;
+ }
+ iframe {
+ border: none;
+ }
+ </style>
+</head>
+<body>
+
+<iframe id="subframe" src="subsubframe.html" scrolling="no"></iframe>
+
+</body>
+</html>
diff --git a/LayoutTests/compositing/iframes/resources/subsubframe.html b/LayoutTests/compositing/iframes/resources/subsubframe.html
new file mode 100644
index 0000000..a1d11e3
--- /dev/null
+++ b/LayoutTests/compositing/iframes/resources/subsubframe.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+ <style type="text/css" media="screen">
+ body {
+ height: 1000px;
+ margin: 0;
+ }
+
+ .box {
+ height: 100px;
+ width: 100px;
+ margin: 100px 0;
+ background-color: green;
+ }
+ </style>
+</head>
+<body>
+
+ <div class="box">
+ </div>
+
+</body>
+</html>
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 2d3ee3d..fc176f9 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,22 @@
+2010-11-02 Simon Fraser <simon.fraser at apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Iframes nested inside a compositing layer don't repaint correctly
+ https://bugs.webkit.org/show_bug.cgi?id=48880
+ <rdar://problem/8194698>
+
+ The isEnclosedInCompositingLayer() is used to modify the behavior of
+ -[WebClipView visibleRect:] in WebKit, so that scrolling-related repaints
+ are correct in composited iframes. Previously it only asked whether the
+ frame's renderer was in a compositing layer, but we actually need to
+ consult all ancestors.
+
+ Test: compositing/iframes/nested-iframe-scrolling.html
+
+ * page/FrameView.cpp:
+ (WebCore::FrameView::isEnclosedInCompositingLayer):
+
2010-11-02 David Hyatt <hyatt at apple.com>
Reviewed by Dan Bernstein.
diff --git a/WebCore/page/FrameView.cpp b/WebCore/page/FrameView.cpp
index 2708ce5..3d93720 100644
--- a/WebCore/page/FrameView.cpp
+++ b/WebCore/page/FrameView.cpp
@@ -573,10 +573,15 @@ bool FrameView::isEnclosedInCompositingLayer() const
{
#if USE(ACCELERATED_COMPOSITING)
RenderObject* frameOwnerRenderer = m_frame->ownerRenderer();
- return frameOwnerRenderer && frameOwnerRenderer->containerForRepaint();
-#else
- return false;
+ if (frameOwnerRenderer && frameOwnerRenderer->containerForRepaint())
+ return true;
+
+ if (Frame* parentFrame = m_frame->tree()->parent()) {
+ if (FrameView* parentView = parentFrame->view())
+ return parentView->isEnclosedInCompositingLayer();
+ }
#endif
+ return false;
}
bool FrameView::syncCompositingStateRecursive()
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list