Title: [125597] trunk
- Revision
- 125597
- Author
- [email protected]
- Date
- 2012-08-14 13:44:35 -0700 (Tue, 14 Aug 2012)
Log Message
REGRESSION (r109851): Video controls do not render
https://bugs.webkit.org/show_bug.cgi?id=93859
Reviewed by Simon Fraser.
Source/WebCore:
Because video layers can't act as an ancestor composited layer whose
backing can be shared by child layers, any child layer of a video
layer needs to be put into its own composited layer. Because this is
technically overlap, the "overlap" indirect compositing reason is
reused for this case.
Test: compositing/video/video-controls-layer-creation.html
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::computeCompositingRequirements):
LayoutTests:
Convert jernoble's test into a layout test.
* compositing/video/video-controls-layer-creation.html: Added.
* platform/chromium/TestExpectations:
* platform/mac/TestExpectations:
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (125596 => 125597)
--- trunk/LayoutTests/ChangeLog 2012-08-14 20:30:52 UTC (rev 125596)
+++ trunk/LayoutTests/ChangeLog 2012-08-14 20:44:35 UTC (rev 125597)
@@ -1,3 +1,16 @@
+2012-08-13 Adrienne Walker <[email protected]>
+
+ REGRESSION (r109851): Video controls do not render
+ https://bugs.webkit.org/show_bug.cgi?id=93859
+
+ Reviewed by Simon Fraser.
+
+ Convert jernoble's test into a layout test.
+
+ * compositing/video/video-controls-layer-creation.html: Added.
+ * platform/chromium/TestExpectations:
+ * platform/mac/TestExpectations:
+
2012-08-14 Robert Hogan <[email protected]>
Update Test Expectations to consolidate bug refs for new tests added
Added: trunk/LayoutTests/compositing/video/video-controls-layer-creation.html (0 => 125597)
--- trunk/LayoutTests/compositing/video/video-controls-layer-creation.html (rev 0)
+++ trunk/LayoutTests/compositing/video/video-controls-layer-creation.html 2012-08-14 20:44:35 UTC (rev 125597)
@@ -0,0 +1,39 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<style>
+ div {
+ -webkit-transform:translateZ(0);
+ position: absolute;
+ top: 100px;
+ left: 0px;
+ width: 300px;
+ height: 300px;
+ background-color: white;
+ z-index: 2;
+ }
+ video {
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ width: 272px;
+ height: 153px;
+ z-index: 3;
+ }
+</style>
+</head>
+<script>
+ if (window.testRunner)
+ testRunner.dumpAsText(true);
+</script>
+<body>
+ <!-- video controls should appear in their own layer -->
+ <video controls>
+ <source src="" type="video/ogg">
+ </video>
+
+ <!-- this div is beneath the video in a stacking context and should through the video into compositing due to overlap -->
+ <div></div>
+ </body>
+</html>
+
Property changes on: trunk/LayoutTests/compositing/video/video-controls-layer-creation.html
___________________________________________________________________
Added: svn:eol-style
Modified: trunk/LayoutTests/platform/chromium/TestExpectations (125596 => 125597)
--- trunk/LayoutTests/platform/chromium/TestExpectations 2012-08-14 20:30:52 UTC (rev 125596)
+++ trunk/LayoutTests/platform/chromium/TestExpectations 2012-08-14 20:44:35 UTC (rev 125597)
@@ -3454,6 +3454,8 @@
// Bug 93148 changed this to a testRunner test and it started timing out on Mac.
BUGWK93148 MAC : fast/css/nested-layers-with-hover.html = TIMEOUT
+// Needs new image to be checked in for all platforms.
+BUGWK93859 : compositing/video/video-controls-layer-creation.html = PASS FAIL
BUGWK93247 DEBUG : fast/lists/list-marker-remove-crash.html = CRASH
Modified: trunk/LayoutTests/platform/mac/TestExpectations (125596 => 125597)
--- trunk/LayoutTests/platform/mac/TestExpectations 2012-08-14 20:30:52 UTC (rev 125596)
+++ trunk/LayoutTests/platform/mac/TestExpectations 2012-08-14 20:44:35 UTC (rev 125597)
@@ -349,6 +349,9 @@
BUGWK91969 : fast/dom/HTMLProgressElement/progress-writing-mode.html = TEXT
BUGWK91969 : fast/dom/HTMLProgressElement/indeterminate-progress-001.html = TEXT
+// Needs new image to be checked in for all platforms.
+BUGWK93859 : compositing/video/video-controls-layer-creation.html = PASS FAIL
+
// Require rebaseline after bug 93148
BUGWK93148 : tables/mozilla_expected_failures/bugs/bug106966.html = TEXT
BUGWK93148 : tables/mozilla_expected_failures/marvin/table_overflow_hidden_tbody.html = TEXT
Modified: trunk/Source/WebCore/ChangeLog (125596 => 125597)
--- trunk/Source/WebCore/ChangeLog 2012-08-14 20:30:52 UTC (rev 125596)
+++ trunk/Source/WebCore/ChangeLog 2012-08-14 20:44:35 UTC (rev 125597)
@@ -1,3 +1,21 @@
+2012-08-13 Adrienne Walker <[email protected]>
+
+ REGRESSION (r109851): Video controls do not render
+ https://bugs.webkit.org/show_bug.cgi?id=93859
+
+ Reviewed by Simon Fraser.
+
+ Because video layers can't act as an ancestor composited layer whose
+ backing can be shared by child layers, any child layer of a video
+ layer needs to be put into its own composited layer. Because this is
+ technically overlap, the "overlap" indirect compositing reason is
+ reused for this case.
+
+ Test: compositing/video/video-controls-layer-creation.html
+
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::computeCompositingRequirements):
+
2012-08-14 Mikhail Pozdnyakov <[email protected]>
WebKitTestRunner needs layoutTestController.dumpResourceLoadCallbacks
Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp (125596 => 125597)
--- trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp 2012-08-14 20:30:52 UTC (rev 125596)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp 2012-08-14 20:44:35 UTC (rev 125597)
@@ -743,9 +743,18 @@
haveComputedBounds = true;
compositingReason = overlapMap->overlapsLayers(absBounds) ? RenderLayer::IndirectCompositingForOverlap : RenderLayer::NoIndirectCompositingReason;
}
-
+
+#if ENABLE(VIDEO)
+ // Video is special. It's the only RenderLayer type that can both have
+ // RenderLayer children and whose children can't use its backing to render
+ // into. These children (the controls) always need to be promoted into their
+ // own layers to draw on top of the accelerated video.
+ if (compositingState.m_compositingAncestor && compositingState.m_compositingAncestor->renderer()->isVideo())
+ compositingReason = RenderLayer::IndirectCompositingForOverlap;
+#endif
+
layer->setIndirectCompositingReason(compositingReason);
-
+
// The children of this layer don't need to composite, unless there is
// a compositing layer among them, so start by inheriting the compositing
// ancestor with m_subtreeIsCompositing set to false.
@@ -763,14 +772,6 @@
overlapMap->pushCompositingContainer();
}
-#if ENABLE(VIDEO)
- // Video is special. It's a replaced element with a content layer, but has shadow content
- // for the controller that must render in front. Without this, the controls fail to show
- // when the video element is a stacking context (e.g. due to opacity or transform).
- if (willBeComposited && layer->renderer()->isVideo())
- childState.m_subtreeIsCompositing = true;
-#endif
-
#if !ASSERT_DISABLED
LayerListMutationDetector mutationChecker(layer);
#endif
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes