[SCM] WebKit Debian packaging branch, webkit-1.1, updated. upstream/1.1.15.1-1414-gc69ee75
simon.fraser at apple.com
simon.fraser at apple.com
Thu Oct 29 20:38:30 UTC 2009
The following commit has been merged in the webkit-1.1 branch:
commit f9b321bc5c73a03814902bbe3b67d3e18fa0dce1
Author: simon.fraser at apple.com <simon.fraser at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Fri Oct 2 23:02:45 2009 +0000
2009-10-02 Simon Fraser <simon.fraser at apple.com>
Reviewed by Dan Bernstein.
Setting zero size on a container of a video element doesn't hide the controller
https://bugs.webkit.org/show_bug.cgi?id=30031
Fix a logic error in enclosingCompositingLayer() when mixing normal flow and
positioned layers. This resulted in enclosingCompositingLayer() giving back a different
answer to the logic used to actually parent compositing layers, so layer positions
and layer hierarchy would be out of agreement.
Test: compositing/geometry/clipped-video-controller.html
* rendering/RenderLayer.cpp:
(WebCore::compositingContainer):
(WebCore::RenderLayer::enclosingCompositingLayer):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::setCompositingParent):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@49052 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 9c8d471..36853b9 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,17 @@
+2009-10-02 Simon Fraser <simon.fraser at apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Setting zero size on a container of a video element doesn't hide the controller
+ https://bugs.webkit.org/show_bug.cgi?id=30031
+
+ Testcase with a video element inside a positioned div with overflow.
+
+ * compositing/geometry/clipped-video-controller.html: Added.
+ * platform/mac/compositing/geometry/clipped-video-controller-expected.checksum: Added.
+ * platform/mac/compositing/geometry/clipped-video-controller-expected.png: Added.
+ * platform/mac/compositing/geometry/clipped-video-controller-expected.txt: Added.
+
2009-10-02 Vitaly Repeshko <vitalyr at chromium.org>
Reviewed by Dimitri Glazkov.
diff --git a/LayoutTests/compositing/geometry/clipped-video-controller.html b/LayoutTests/compositing/geometry/clipped-video-controller.html
new file mode 100644
index 0000000..631bd4a
--- /dev/null
+++ b/LayoutTests/compositing/geometry/clipped-video-controller.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+
+<html lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <title>Clipped Video</title>
+</head>
+ <style>
+
+ #box {
+ position: absolute;
+ top: 50px;
+ left: 20px;
+ height: 50px;
+ width: 50px;
+ overflow: hidden;
+ border: 10px solid green;
+ }
+
+ </style>
+ <script type="text/javascript" charset="utf-8">
+ if (window.layoutTestController)
+ layoutTestController.waitUntilDone();
+ </script>
+
+<body>
+ <p>The video controller should not be visible below</p>
+ <div id="box">
+ <video src="../resources/video.mp4" controls></video>
+ </div>
+ <script type="text/javascript" charset="utf-8">
+ var video = document.getElementsByTagName('video')[0];
+ video.addEventListener('canplaythrough', function() {
+ if (window.layoutTestController)
+ layoutTestController.notifyDone();
+ }, false);
+ </script>
+</body>
+</html>
diff --git a/LayoutTests/platform/mac/compositing/geometry/clipped-video-controller-expected.checksum b/LayoutTests/platform/mac/compositing/geometry/clipped-video-controller-expected.checksum
new file mode 100644
index 0000000..c71a5b3
--- /dev/null
+++ b/LayoutTests/platform/mac/compositing/geometry/clipped-video-controller-expected.checksum
@@ -0,0 +1 @@
+df574acab02e4109732f1aede511167f
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/compositing/geometry/clipped-video-controller-expected.png b/LayoutTests/platform/mac/compositing/geometry/clipped-video-controller-expected.png
new file mode 100644
index 0000000..fee3cf4
Binary files /dev/null and b/LayoutTests/platform/mac/compositing/geometry/clipped-video-controller-expected.png differ
diff --git a/LayoutTests/platform/mac/compositing/geometry/clipped-video-controller-expected.txt b/LayoutTests/platform/mac/compositing/geometry/clipped-video-controller-expected.txt
new file mode 100644
index 0000000..3bbd831
--- /dev/null
+++ b/LayoutTests/platform/mac/compositing/geometry/clipped-video-controller-expected.txt
@@ -0,0 +1,15 @@
+layer at (0,0) size 800x600
+ RenderView at (0,0) size 800x600
+layer at (0,0) size 800x50
+ RenderBlock {HTML} at (0,0) size 800x50
+ RenderBody {BODY} at (8,16) size 784x18
+ RenderBlock {P} at (0,0) size 784x18
+ RenderText {#text} at (0,0) size 305x18
+ text run at (0,0) width 305: "The video controller should not be visible below"
+layer at (20,50) size 70x70 clip at (30,60) size 50x50 scrollWidth 352 scrollHeight 292
+ RenderBlock (positioned) {DIV} at (20,50) size 70x70 [border: (10px solid #008000)]
+ RenderText {#text} at (0,0) size 0x0
+layer at (30,60) size 352x288 backgroundClip at (30,60) size 50x50 clip at (30,60) size 50x50 outlineClip at (30,60) size 50x50
+ RenderVideo {VIDEO} at (10,10) size 352x288
+layer at (30,60) size 352x288 backgroundClip at (30,60) size 50x50 clip at (30,60) size 50x50 outlineClip at (30,60) size 50x50
+ RenderBlock (relative positioned) {DIV} at (0,0) size 352x288
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 94e6f6f..58f1918 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,23 @@
+2009-10-02 Simon Fraser <simon.fraser at apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Setting zero size on a container of a video element doesn't hide the controller
+ https://bugs.webkit.org/show_bug.cgi?id=30031
+
+ Fix a logic error in enclosingCompositingLayer() when mixing normal flow and
+ positioned layers. This resulted in enclosingCompositingLayer() giving back a different
+ answer to the logic used to actually parent compositing layers, so layer positions
+ and layer hierarchy would be out of agreement.
+
+ Test: compositing/geometry/clipped-video-controller.html
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::compositingContainer):
+ (WebCore::RenderLayer::enclosingCompositingLayer):
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::setCompositingParent):
+
2009-10-02 Kent Tamura <tkent at chromium.org>
Reviewed by Eric Seidel.
diff --git a/WebCore/rendering/RenderLayer.cpp b/WebCore/rendering/RenderLayer.cpp
index 95db43a..9356c70 100644
--- a/WebCore/rendering/RenderLayer.cpp
+++ b/WebCore/rendering/RenderLayer.cpp
@@ -662,21 +662,20 @@ RenderLayer* RenderLayer::enclosingTransformedAncestor() const
return curr;
}
+static inline const RenderLayer* compositingContainer(const RenderLayer* layer)
+{
+ return layer->isNormalFlowOnly() ? layer->parent() : layer->stackingContext();
+}
+
#if USE(ACCELERATED_COMPOSITING)
RenderLayer* RenderLayer::enclosingCompositingLayer(bool includeSelf) const
{
if (includeSelf && isComposited())
return const_cast<RenderLayer*>(this);
- // Compositing layers are parented according to stacking order and overflow list,
- // so we have to check whether the parent is a stacking context, or whether
- // the child is overflow-only.
- bool inNormalFlowList = isNormalFlowOnly();
- for (RenderLayer* curr = parent(); curr; curr = curr->parent()) {
- if (curr->isComposited() && (inNormalFlowList || curr->isStackingContext()))
- return curr;
-
- inNormalFlowList = curr->isNormalFlowOnly();
+ for (const RenderLayer* curr = compositingContainer(this); curr; curr = compositingContainer(curr)) {
+ if (curr->isComposited())
+ return const_cast<RenderLayer*>(curr);
}
return 0;
diff --git a/WebCore/rendering/RenderLayerCompositor.cpp b/WebCore/rendering/RenderLayerCompositor.cpp
index bcd1f08..5201287 100644
--- a/WebCore/rendering/RenderLayerCompositor.cpp
+++ b/WebCore/rendering/RenderLayerCompositor.cpp
@@ -535,6 +535,7 @@ void RenderLayerCompositor::computeCompositingRequirements(RenderLayer* layer, O
void RenderLayerCompositor::setCompositingParent(RenderLayer* childLayer, RenderLayer* parentLayer)
{
+ ASSERT(!parentLayer || childLayer->ancestorCompositingLayer() == parentLayer);
ASSERT(childLayer->isComposited());
// It's possible to be called with a parent that isn't yet composited when we're doing
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list