[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