[webkit-reviews] review denied: [Bug 49481] Implement WebKit Full Screen support : [Attachment 77135] NewFullScreen-Part-3-Renderering

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Jan 3 16:41:27 PST 2011


Simon Fraser (smfr) <simon.fraser at apple.com> has denied Jer Noble
<jer.noble at apple.com>'s request for review:
Bug 49481: Implement WebKit Full Screen support
https://bugs.webkit.org/show_bug.cgi?id=49481

Attachment 77135: NewFullScreen-Part-3-Renderering
https://bugs.webkit.org/attachment.cgi?id=77135&action=review

------- Additional Comments from Simon Fraser (smfr) <simon.fraser at apple.com>
View in context: https://bugs.webkit.org/attachment.cgi?id=77135&action=review

I'd like to see one more rev of this patch.

> WebCore/ChangeLog:16
> +	   The RenderFullScreen is intended to be used by clients of that API
to allow a DOM subtree to
> +	   be rendered outside its original Frame. Because of this, there are a
few areas of the
> +	   rendering code which need to be special cased: RenderFullScreen
layers should not be clipped
> +	   to the viewport, as they will almost always be rendering outside the
viewport area;
> +	   RenderFullScreen graphics layers should not be reparented by the
RenderLayerCompositor, as
> +	   the client will likely want to reparent the platformLayer into their
own fullscreen platform
> +	   window; the FrameView must update the RenderFullScreen graphics
layer tree separately from
> +	   the root layer, as the two trees are disconnected.

Rendering outside the viewport is only true now when animating, correct? If so,
the changelog should be updated to say this.

> WebCore/page/FrameView.cpp:542
> +    if (document->webkitIsFullScreen() &&
document->webkitFullScreenRenderer() &&
document->webkitFullScreenRenderer()->isAnimating())

Maybe you could add a Document::isRunningFullscreenAnimation() method that
encapsulates those tests.

> WebCore/page/FrameView.cpp:646
> +	   if (GraphicsLayer* fullScreenLayer =
toRenderBox(fullScreenRenderer)->layer()->backing()->graphicsLayer())

I think you should null-check layer()->backing().

> WebCore/page/FrameView.cpp:2153
> +	       if (GraphicsLayer* fullScreenLayer =
toRenderBox(fullScreenRenderer)->layer()->backing()->graphicsLayer())

Ditto.

> WebCore/rendering/RenderLayerBacking.cpp:63
> +#if ENABLE(FULLSCREEN_API)
> +#include "RenderFullScreen.h"
> +#endif
> +

Not sure why this include is necessary.

> WebCore/rendering/RenderLayerBacking.cpp:185
> +	   && !layerOrAncestorIsFullScreen(m_owningLayer)

It's unfortunate that the common case of layerOrAncestorIsFullScreen() walks
the whole tree. Maybe test whether the document has a fullscreen renderer
first?

> WebCore/rendering/RenderLayerCompositor.cpp:819
> +#if ENABLE(FULLSCREEN_API)
> +	   // For the sake of clients of the full screen renderer, don't
reparent
> +	   // the full screen layer out from under them if they're in the
middle of
> +	   // animating.
> +	   if (layer->renderer()->isFullScreen() &&
toRenderFullScreen(layer->renderer())->isAnimating())
> +	       return;
> +#endif

What happens to ensure that layers are correctly updated once the animation is
complete? Do we just rely on the style change? Is there a way we can make this
special-casing unnecessary?


More information about the webkit-reviews mailing list