[Webkit-unassigned] [Bug 55257] Support creating compositing layers for scrollable and overflowing objects

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu Mar 3 18:14:29 PST 2011


https://bugs.webkit.org/show_bug.cgi?id=55257





--- Comment #12 from James Robinson <jamesr at chromium.org>  2011-03-03 18:14:29 PST ---
(From update of attachment 84672)
View in context: https://bugs.webkit.org/attachment.cgi?id=84672&action=review

> LayoutTests/platform/chromium/test_expectations.txt:3111
> +// Needs ScrollableOverflow compositing trigger. This test should be enabled on platforms allowing
> +// this trigger.
> +BUGWK55257 GPU SKIP : platform/chromium/compositing/layer-creation/overflow-block-layer.html = PASS
> +BUGWK55257 GPU SKIP : platform/chromium/compositing/layer-creation/overflow-iframe-layer.html = PASS

In chromium we don't SKIP tests unless they cause the test harness to crash in some way.  Instead set the appropriate expectation ( = TEXT or whatnot).

> Source/WebCore/rendering/RenderLayerCompositor.cpp:1292
> +    bool isRootLayer = box->layer()->isRootLayer();
> +    if (isRootLayer && !m_renderView->document()->frame()->tree()->parent()) {
> +        // Do not create a backing for root layers, these are handled differently.

I'm a bit confused here - why do we need the two checks?  Does isRootLayer not indicate whether the layer is a root layer?

> Source/WebCore/rendering/RenderLayerCompositor.cpp:1305
> +        // Some sites use tiny iframes to load hidden content, so don't composite those.
> +        if (frameView->layoutWidth() <= 1 || frameView->layoutHeight() <= 1)

This still feels redundant with the check at 1310.  If we don't want to make compositing layers for small things, we should just do the size check once IMO.

> Source/WebCore/rendering/RenderView.cpp:818
> +bool RenderView::canBeProgramaticallyScrolled(bool) const
> +{
> +    if (node() && node()->isDocumentNode()) {
> +        // Handle scrolling="no" style for (i)frames.
> +        HTMLFrameOwnerElement* ownerElement = document()->ownerElement();
> +        if (ownerElement && (ownerElement->hasTagName(HTMLNames::iframeTag) || ownerElement->hasTagName(HTMLNames::frameTag))) {
> +            HTMLFrameElementBase* frame = static_cast<HTMLFrameElementBase*>(ownerElement);
> +            if (frame->scrollingMode() == ScrollbarAlwaysOff)
> +                return false;
> +        }
> +    }
> +
> +    return RenderBox::canBeProgramaticallyScrolled(false);
> +}

Supporting scrolling="no" on an iframe is a separate issue - please file another bug on this and attach this code + the corresponding test(s) to that bug.

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list