Title: [153112] trunk/Source/WebCore
- Revision
- 153112
- Author
- [email protected]
- Date
- 2013-07-24 20:16:00 -0700 (Wed, 24 Jul 2013)
Log Message
[iOS] Captions are clipped in documents using pagination
https://bugs.webkit.org/show_bug.cgi?id=119072
Reviewed by Beth Dakin.
MediaControlTextTrackContainerElement::createTextTrackRepresentationImage() is called
to paint captions into a layer used for fullscreen video. It did the painting using
a subtree paint, but starting at the root RenderView's layer. This is problematic,
because the caption painting is subject to clipping for columns, and any enclosing
overflow:hidden container.
Fix this by starting the paint at the MediaControlTextTrackContainerElement's
renderer's layer. By doing this we don't have to worry about an offset, so no
translation is required.
Also make sure we update layer before grabbing the renderer (in case layout
destroys it).
* html/shadow/MediaControlElements.cpp:
(WebCore::MediaControlTextTrackContainerElement::createTextTrackRepresentationImage):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (153111 => 153112)
--- trunk/Source/WebCore/ChangeLog 2013-07-25 02:32:37 UTC (rev 153111)
+++ trunk/Source/WebCore/ChangeLog 2013-07-25 03:16:00 UTC (rev 153112)
@@ -1,5 +1,28 @@
2013-07-24 Simon Fraser <[email protected]>
+ [iOS] Captions are clipped in documents using pagination
+ https://bugs.webkit.org/show_bug.cgi?id=119072
+
+ Reviewed by Beth Dakin.
+
+ MediaControlTextTrackContainerElement::createTextTrackRepresentationImage() is called
+ to paint captions into a layer used for fullscreen video. It did the painting using
+ a subtree paint, but starting at the root RenderView's layer. This is problematic,
+ because the caption painting is subject to clipping for columns, and any enclosing
+ overflow:hidden container.
+
+ Fix this by starting the paint at the MediaControlTextTrackContainerElement's
+ renderer's layer. By doing this we don't have to worry about an offset, so no
+ translation is required.
+
+ Also make sure we update layer before grabbing the renderer (in case layout
+ destroys it).
+
+ * html/shadow/MediaControlElements.cpp:
+ (WebCore::MediaControlTextTrackContainerElement::createTextTrackRepresentationImage):
+
+2013-07-24 Simon Fraser <[email protected]>
+
REGRESSION (r152335): Mac Pro title occluded in MobileSafari; can't scroll page
https://bugs.webkit.org/show_bug.cgi?id=119066
<rdar://problem/14499184>
Modified: trunk/Source/WebCore/html/shadow/MediaControlElements.cpp (153111 => 153112)
--- trunk/Source/WebCore/html/shadow/MediaControlElements.cpp 2013-07-25 02:32:37 UTC (rev 153111)
+++ trunk/Source/WebCore/html/shadow/MediaControlElements.cpp 2013-07-25 03:16:00 UTC (rev 153112)
@@ -1397,35 +1397,32 @@
if (!hasChildNodes())
return 0;
- RenderObject* renderer = this->renderer();
- if (!renderer)
- return 0;
-
Frame* frame = document()->frame();
if (!frame)
return 0;
document()->updateLayout();
- LayoutRect topLevelRect;
- IntRect paintingRect = pixelSnappedIntRect(renderer->paintingRootRect(topLevelRect));
+ RenderObject* renderer = this->renderer();
+ if (!renderer)
+ return 0;
+ if (!renderer->hasLayer())
+ return 0;
+
+ RenderLayer* layer = toRenderLayerModelObject(renderer)->layer();
+
float deviceScaleFactor = 1;
if (Page* page = document()->page())
deviceScaleFactor = page->deviceScaleFactor();
+ IntRect paintingRect = IntRect(IntPoint(), layer->size());
OwnPtr<ImageBuffer> buffer(ImageBuffer::create(paintingRect.size(), deviceScaleFactor, ColorSpaceDeviceRGB));
if (!buffer)
return 0;
- // Translate the renderer painting rect into graphics context coordinates.
- FloatSize translation(-paintingRect.x(), -paintingRect.y());
+ layer->paint(buffer->context(), paintingRect, PaintBehaviorFlattenCompositingLayers, 0, 0, RenderLayer::PaintLayerPaintingCompositingAllPhases);
- buffer->context()->translate(translation);
-
- RenderLayer* layer = frame->contentRenderer()->layer();
- layer->paint(buffer->context(), paintingRect, PaintBehaviorFlattenCompositingLayers, renderer, 0, RenderLayer::PaintLayerPaintingCompositingAllPhases);
-
return buffer->copyImage();
}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes