Changeset 92873 in webkit


Ignore:
Timestamp:
Aug 11, 2011 12:44:45 PM (13 years ago)
Author:
enne@google.com
Message:

Support creating compositing layers for scrollable frames and iframes
https://bugs.webkit.org/show_bug.cgi?id=55257

Reviewed by James Robinson.

Source/WebCore:

When force compositing mode is turned on, iframes with overflow will
become composited (in order to enable faster scrolling).

This patch was originally by Daniel Sievers <sievers@chromium.org>.

Tests: platform/chromium/compositing/force-compositing-mode/no-overflow-iframe-layer.html

platform/chromium/compositing/force-compositing-mode/overflow-hidden-iframe-layer.html
platform/chromium/compositing/force-compositing-mode/overflow-iframe-enter-compositing.html
platform/chromium/compositing/force-compositing-mode/overflow-iframe-layer.html
platform/chromium/compositing/force-compositing-mode/overflow-iframe-leave-compositing.html

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::cacheAcceleratedCompositingFlags):
(WebCore::RenderLayerCompositor::requiresCompositingForScrollableFrame):

  • rendering/RenderLayerCompositor.h:

LayoutTests:

  • platform/chromium/compositing/force-compositing-mode/no-overflow-iframe-layer-expected.txt: Added.
  • platform/chromium/compositing/force-compositing-mode/no-overflow-iframe-layer.html: Added.
  • platform/chromium/compositing/force-compositing-mode/overflow-hidden-iframe-layer-expected.txt: Added.
  • platform/chromium/compositing/force-compositing-mode/overflow-hidden-iframe-layer.html: Added.
  • platform/chromium/compositing/force-compositing-mode/overflow-iframe-enter-compositing-expected.txt: Added.
  • platform/chromium/compositing/force-compositing-mode/overflow-iframe-enter-compositing.html: Added.
  • platform/chromium/compositing/force-compositing-mode/overflow-iframe-layer-expected.txt: Added.
  • platform/chromium/compositing/force-compositing-mode/overflow-iframe-layer.html: Added.
  • platform/chromium/compositing/force-compositing-mode/overflow-iframe-leave-compositing-expected.txt: Added.
  • platform/chromium/compositing/force-compositing-mode/overflow-iframe-leave-compositing.html: Added.
  • platform/chromium/compositing/force-compositing-mode/resources/subframe-big.html: Added.
  • platform/chromium/compositing/force-compositing-mode/resources/subframe-small.html: Added.
Location:
trunk
Files:
13 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r92870 r92873  
     12011-08-10  Adrienne Walker  <enne@google.com>
     2
     3        Support creating compositing layers for scrollable frames and iframes
     4        https://bugs.webkit.org/show_bug.cgi?id=55257
     5
     6        Reviewed by James Robinson.
     7
     8        * platform/chromium/compositing/force-compositing-mode/no-overflow-iframe-layer-expected.txt: Added.
     9        * platform/chromium/compositing/force-compositing-mode/no-overflow-iframe-layer.html: Added.
     10        * platform/chromium/compositing/force-compositing-mode/overflow-hidden-iframe-layer-expected.txt: Added.
     11        * platform/chromium/compositing/force-compositing-mode/overflow-hidden-iframe-layer.html: Added.
     12        * platform/chromium/compositing/force-compositing-mode/overflow-iframe-enter-compositing-expected.txt: Added.
     13        * platform/chromium/compositing/force-compositing-mode/overflow-iframe-enter-compositing.html: Added.
     14        * platform/chromium/compositing/force-compositing-mode/overflow-iframe-layer-expected.txt: Added.
     15        * platform/chromium/compositing/force-compositing-mode/overflow-iframe-layer.html: Added.
     16        * platform/chromium/compositing/force-compositing-mode/overflow-iframe-leave-compositing-expected.txt: Added.
     17        * platform/chromium/compositing/force-compositing-mode/overflow-iframe-leave-compositing.html: Added.
     18        * platform/chromium/compositing/force-compositing-mode/resources/subframe-big.html: Added.
     19        * platform/chromium/compositing/force-compositing-mode/resources/subframe-small.html: Added.
     20
    1212011-08-11  David Hyatt  <hyatt@apple.com>
    222
  • trunk/Source/WebCore/ChangeLog

    r92871 r92873  
     12011-08-10  Adrienne Walker  <enne@google.com>
     2
     3        Support creating compositing layers for scrollable frames and iframes
     4        https://bugs.webkit.org/show_bug.cgi?id=55257
     5
     6        Reviewed by James Robinson.
     7
     8        When force compositing mode is turned on, iframes with overflow will
     9        become composited (in order to enable faster scrolling).
     10
     11        This patch was originally by Daniel Sievers <sievers@chromium.org>.
     12
     13        Tests: platform/chromium/compositing/force-compositing-mode/no-overflow-iframe-layer.html
     14               platform/chromium/compositing/force-compositing-mode/overflow-hidden-iframe-layer.html
     15               platform/chromium/compositing/force-compositing-mode/overflow-iframe-enter-compositing.html
     16               platform/chromium/compositing/force-compositing-mode/overflow-iframe-layer.html
     17               platform/chromium/compositing/force-compositing-mode/overflow-iframe-leave-compositing.html
     18
     19        * rendering/RenderLayerCompositor.cpp:
     20        (WebCore::RenderLayerCompositor::cacheAcceleratedCompositingFlags):
     21        (WebCore::RenderLayerCompositor::requiresCompositingForScrollableFrame):
     22        * rendering/RenderLayerCompositor.h:
     23
    1242011-08-11  Yong Li  <yoli@rim.com>
    225
  • trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp

    r92697 r92873  
    140140        showDebugBorders = settings->showDebugBorders();
    141141        showRepaintCounter = settings->showRepaintCounter();
    142 
    143         if (!m_renderView->document()->frame()->tree()->parent())
    144             forceCompositingMode = settings->forceCompositingMode() && hasAcceleratedCompositing;
     142        forceCompositingMode = settings->forceCompositingMode() && hasAcceleratedCompositing;
     143
     144        if (forceCompositingMode && m_renderView->document()->ownerElement())
     145            forceCompositingMode = requiresCompositingForScrollableFrame();
    145146    }
    146147
     
    13591360}
    13601361
     1362bool RenderLayerCompositor::requiresCompositingForScrollableFrame() const
     1363{
     1364    // Need this done first to determine overflow.
     1365    ASSERT(!m_renderView->needsLayout());
     1366
     1367    ScrollView* scrollView = m_renderView->frameView();
     1368    return scrollView->verticalScrollbar() || scrollView->horizontalScrollbar();
     1369}
     1370
    13611371bool RenderLayerCompositor::requiresCompositingForTransform(RenderObject* renderer) const
    13621372{
  • trunk/Source/WebCore/rendering/RenderLayerCompositor.h

    r91542 r92873  
    271271    bool requiresCompositingWhenDescendantsAreCompositing(RenderObject*) const;
    272272    bool requiresCompositingForFullScreen(RenderObject*) const;
     273    bool requiresCompositingForScrollableFrame() const;
    273274
    274275    bool requiresScrollLayer(RootLayerAttachment) const;
Note: See TracChangeset for help on using the changeset viewer.