Changeset 259445 in webkit


Ignore:
Timestamp:
Apr 3, 2020 12:04:45 AM (4 years ago)
Author:
Simon Fraser
Message:

Flesh out enclosingScrollableArea() implementations
https://bugs.webkit.org/show_bug.cgi?id=209953

Reviewed by Timothy Hatcher.

enclosingScrollableArea() is a virtual function on ScrollableArea. It's currently
only called in an unused iOS WebKit1 code path, but will soon be used for scroll
latching, so flesh out implementations.

Will be tested by future scroll latching tests.

  • page/FrameView.cpp:

(WebCore::FrameView::enclosingScrollableArea const):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::enclosingScrollableArea const):

  • rendering/RenderListBox.cpp:

(WebCore::RenderListBox::enclosingScrollableArea const):

Location:
trunk/Source/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r259443 r259445  
     12020-04-03  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Flesh out enclosingScrollableArea() implementations
     4        https://bugs.webkit.org/show_bug.cgi?id=209953
     5
     6        Reviewed by Timothy Hatcher.
     7
     8        enclosingScrollableArea() is a virtual function on ScrollableArea. It's currently
     9        only called in an unused iOS WebKit1 code path, but will soon be used for scroll
     10        latching, so flesh out implementations.
     11
     12        Will be tested by future scroll latching tests.
     13
     14        * page/FrameView.cpp:
     15        (WebCore::FrameView::enclosingScrollableArea const):
     16        * rendering/RenderLayer.cpp:
     17        (WebCore::RenderLayer::enclosingScrollableArea const):
     18        * rendering/RenderListBox.cpp:
     19        (WebCore::RenderListBox::enclosingScrollableArea const):
     20
    1212020-04-02  Simon Fraser  <simon.fraser@apple.com>
    222
  • trunk/Source/WebCore/page/FrameView.cpp

    r259335 r259445  
    38013801ScrollableArea* FrameView::enclosingScrollableArea() const
    38023802{
    3803     // FIXME: Walk up the frame tree and look for a scrollable parent frame or RenderLayer.
    3804     return nullptr;
     3803    if (frame().isMainFrame())
     3804        return nullptr;
     3805
     3806    auto* ownerElement = frame().ownerElement();
     3807    if (!ownerElement)
     3808        return nullptr;
     3809
     3810    auto* ownerRenderer = ownerElement->renderer();
     3811    if (!ownerRenderer)
     3812        return nullptr;
     3813
     3814    auto* layer = ownerRenderer->enclosingLayer();
     3815    if (!layer)
     3816        return nullptr;
     3817
     3818    return layer->enclosingScrollableLayer(IncludeSelfOrNot::IncludeSelf, CrossFrameBoundaries::No);
    38053819}
    38063820
  • trunk/Source/WebCore/rendering/RenderLayer.cpp

    r259248 r259445  
    35993599ScrollableArea* RenderLayer::enclosingScrollableArea() const
    36003600{
    3601     if (RenderLayer* scrollableLayer = enclosingScrollableLayer(IncludeSelfOrNot::ExcludeSelf, CrossFrameBoundaries::Yes))
     3601    if (auto* scrollableLayer = enclosingScrollableLayer(IncludeSelfOrNot::ExcludeSelf, CrossFrameBoundaries::No))
    36023602        return scrollableLayer;
    36033603
    3604     // FIXME: We should return the frame view here (or possibly an ancestor frame view,
    3605     // if the frame view isn't scrollable.
    3606     return nullptr;
     3604    return &renderer().view().frameView();
    36073605}
    36083606
  • trunk/Source/WebCore/rendering/RenderListBox.cpp

    r255957 r259445  
    879879ScrollableArea* RenderListBox::enclosingScrollableArea() const
    880880{
    881     // FIXME: Return a RenderLayer that's scrollable.
    882     return nullptr;
     881    auto* layer = enclosingLayer();
     882    if (!layer)
     883        return nullptr;
     884
     885    return layer->enclosingScrollableLayer(IncludeSelfOrNot::ExcludeSelf, CrossFrameBoundaries::No);
    883886}
    884887
Note: See TracChangeset for help on using the changeset viewer.