⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 236459 in webkit


Ignore:
Timestamp:
Sep 25, 2018, 8:49:20 AM (8 years ago)
Author:
Simon Fraser
Message:

Clean up code around RenderLayer's "has accelerated scrolling" functions
​https://bugs.webkit.org/show_bug.cgi?id=189932

Reviewed by Zalan Bujtas.

RenderLayer had:

bool hasAcceleratedTouchScrolling()
bool hasTouchScrollableOverflow()
bool usesAcceleratedScrolling()
bool usesCompositedScrolling()
bool usesAsyncScrolling()

which are hard to keep in your head. Removed usesAcceleratedScrolling() since it just returns hasTouchScrollableOverflow().
Renamed hasAcceleratedTouchScrolling() to canUseAcceleratedTouchScrolling() to indicate that it just looks at style,
not whether layout has given the layer scrollable overflow yet. Tidy up some #ifdefs.

usesCompositedScrolling() and usesAsyncScrolling() are ScrollableArea overrides, and
look at backing layers, so require that compositing has run already. Note this in comments.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::canUseAcceleratedTouchScrolling const):
(WebCore::RenderLayer::hasTouchScrollableOverflow const):
(WebCore::RenderLayer::handleTouchEvent):
(WebCore::RenderLayer::usesAsyncScrolling const):
(WebCore::RenderLayer::showsOverflowControls const):
(WebCore::RenderLayer::calculateClipRects const):
(WebCore::RenderLayer::hasAcceleratedTouchScrolling const): Deleted.
(WebCore::RenderLayer::usesAcceleratedScrolling const): Deleted.

  • rendering/RenderLayer.h:
  • rendering/RenderLayerBacking.cpp:

(WebCore::layerOrAncestorIsTransformedOrUsingCompositedScrolling):
(WebCore::RenderLayerBacking::updateConfiguration):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::useCoordinatedScrollingForLayer const):
(WebCore::RenderLayerCompositor::requiresCompositingForOverflowScrolling const):

Location:
trunk/Source/WebCore
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r236450 r236459  
     12018-09-25  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Clean up code around RenderLayer's "has accelerated scrolling" functions
     4        https://bugs.webkit.org/show_bug.cgi?id=189932
     5
     6        Reviewed by Zalan Bujtas.
     7       
     8        RenderLayer had:
     9       
     10        bool hasAcceleratedTouchScrolling()
     11        bool hasTouchScrollableOverflow()
     12        bool usesAcceleratedScrolling()
     13        bool usesCompositedScrolling()
     14        bool usesAsyncScrolling()
     15       
     16        which are hard to keep in your head. Removed usesAcceleratedScrolling() since it just returns hasTouchScrollableOverflow().
     17        Renamed hasAcceleratedTouchScrolling() to canUseAcceleratedTouchScrolling() to indicate that it just looks at style,
     18        not whether layout has given the layer scrollable overflow yet. Tidy up some #ifdefs.
     19       
     20        usesCompositedScrolling() and usesAsyncScrolling() are ScrollableArea overrides, and
     21        look at backing layers, so require that compositing has run already. Note this in comments.
     22
     23        * rendering/RenderLayer.cpp:
     24        (WebCore::RenderLayer::canUseAcceleratedTouchScrolling const):
     25        (WebCore::RenderLayer::hasTouchScrollableOverflow const):
     26        (WebCore::RenderLayer::handleTouchEvent):
     27        (WebCore::RenderLayer::usesAsyncScrolling const):
     28        (WebCore::RenderLayer::showsOverflowControls const):
     29        (WebCore::RenderLayer::calculateClipRects const):
     30        (WebCore::RenderLayer::hasAcceleratedTouchScrolling const): Deleted.
     31        (WebCore::RenderLayer::usesAcceleratedScrolling const): Deleted.
     32        * rendering/RenderLayer.h:
     33        * rendering/RenderLayerBacking.cpp:
     34        (WebCore::layerOrAncestorIsTransformedOrUsingCompositedScrolling):
     35        (WebCore::RenderLayerBacking::updateConfiguration):
     36        * rendering/RenderLayerCompositor.cpp:
     37        (WebCore::RenderLayerCompositor::useCoordinatedScrollingForLayer const):
     38        (WebCore::RenderLayerCompositor::requiresCompositingForOverflowScrolling const):
     39
    1402018-09-24  Fujii Hironori  <Hironori.Fujii@sony.com>
    241
  • trunk/Source/WebCore/rendering/RenderLayer.cpp

    r236424 r236459  
    19491949}
    19501950
    1951 #if PLATFORM(IOS)
    1952 bool RenderLayer::hasAcceleratedTouchScrolling() const
    1953 {
    1954 #if ENABLE(ACCELERATED_OVERFLOW_SCROLLING)
    1955     if (!scrollsOverflow())
    1956         return false;
    1957 
    1958     return renderer().style().useTouchOverflowScrolling() || renderer().settings().alwaysUseAcceleratedOverflowScroll();
     1951bool RenderLayer::canUseAcceleratedTouchScrolling() const
     1952{
     1953#if PLATFORM(IOS) && ENABLE(ACCELERATED_OVERFLOW_SCROLLING)
     1954    return scrollsOverflow() && (renderer().style().useTouchOverflowScrolling() || renderer().settings().alwaysUseAcceleratedOverflowScroll());
    19591955#else
    19601956    return false;
    … …  
    19641960bool RenderLayer::hasTouchScrollableOverflow() const
    19651961{
    1966     return hasAcceleratedTouchScrolling() && (hasScrollableHorizontalOverflow() || hasScrollableVerticalOverflow());
    1967 }
    1968 
    1969 #if ENABLE(TOUCH_EVENTS)
     1962    return canUseAcceleratedTouchScrolling() && (hasScrollableHorizontalOverflow() || hasScrollableVerticalOverflow());
     1963}
     1964
     1965#if ENABLE(IOS_TOUCH_EVENTS)
    19701966bool RenderLayer::handleTouchEvent(const PlatformTouchEvent& touchEvent)
    19711967{
    19721968    // If we have accelerated scrolling, let the scrolling be handled outside of WebKit.
    1973     if (usesAcceleratedScrolling())
     1969    if (hasTouchScrollableOverflow())
    19741970        return false;
    19751971
    19761972    return ScrollableArea::handleTouchEvent(touchEvent);
    19771973}
    1978 #endif
    1979 #endif // PLATFORM(IOS)
    1980 
    1981 bool RenderLayer::usesAcceleratedScrolling() const
    1982 {
    1983 #if PLATFORM(IOS)
    1984     return hasTouchScrollableOverflow();
    1985 #else
    1986     return false;
    1987 #endif
    1988 }
    1989 
    1990 #if ENABLE(IOS_TOUCH_EVENTS)
     1974
    19911975void RenderLayer::registerAsTouchEventListenerForScrolling()
    19921976{
    … …  
    20081992#endif // ENABLE(IOS_TOUCH_EVENTS)
    20091993
     1994// FIXME: this is only valid after we've made layers.
    20101995bool RenderLayer::usesCompositedScrolling() const
    20111996{
    … …  
    20131998}
    20141999
     2000// FIXME: this is only valid after we've made layers.
    20152001bool RenderLayer::usesAsyncScrolling() const
    20162002{
    2017     return hasAcceleratedTouchScrolling() && usesCompositedScrolling();
     2003    return canUseAcceleratedTouchScrolling() && usesCompositedScrolling();
    20182004}
    20192005
    … …  
    33893375#if PLATFORM(IOS)
    33903376    // Don't render (custom) scrollbars if we have accelerated scrolling.
    3391     if (hasAcceleratedTouchScrolling())
     3377    if (canUseAcceleratedTouchScrolling())
    33923378        return false;
    33933379#endif
    … …  
    60816067        || renderer.style().hasIsolation()
    60826068#if PLATFORM(IOS)
    6083         || layer.hasAcceleratedTouchScrolling()
     6069        || layer.canUseAcceleratedTouchScrolling()
    60846070#endif
    60856071        || (renderer.style().willChange() && renderer.style().willChange()->canCreateStackingContext());
    … …  
    64156401#if ENABLE(IOS_TOUCH_EVENTS)
    64166402    if (addedOrRemoved) {
    6417         if (isScrollable && !hasAcceleratedTouchScrolling())
     6403        if (isScrollable && !canUseAcceleratedTouchScrolling())
    64186404            registerAsTouchEventListenerForScrolling();
    64196405        else {
  • trunk/Source/WebCore/rendering/RenderLayer.h

    r236424 r236459  
    252252
    253253#if PLATFORM(IOS)
    254 #if ENABLE(TOUCH_EVENTS)
     254#if ENABLE(IOS_TOUCH_EVENTS)
    255255    bool handleTouchEvent(const PlatformTouchEvent&) override;
    256256#endif
    … …  
    265265    bool requiresScrollBoundsOriginUpdate() const { return m_requiresScrollBoundsOriginUpdate; }
    266266    void setRequiresScrollBoundsOriginUpdate(bool requiresUpdate = true) { m_requiresScrollBoundsOriginUpdate = requiresUpdate; }
     267#endif
    267268
    268269    // Returns true when the layer could do touch scrolling, but doesn't look at whether there is actually scrollable overflow.
    269     bool hasAcceleratedTouchScrolling() const;
     270    bool canUseAcceleratedTouchScrolling() const;
    270271    // Returns true when there is actually scrollable overflow (requires layout to be up-to-date).
    271272    bool hasTouchScrollableOverflow() const;
    272 #else
    273     bool hasAcceleratedTouchScrolling() const { return false; }
    274     bool hasTouchScrollableOverflow() const { return false; }
    275 #endif
    276     bool usesAcceleratedScrolling() const;
    277273
    278274    int verticalScrollbarWidth(OverlayScrollbarSizeRelevancy = IgnoreOverlayScrollbarSize) const;
    … …  
    897893    void logMockScrollAnimatorMessage(const String&) const override;
    898894
    899 #if PLATFORM(IOS)
     895#if ENABLE(IOS_TOUCH_EVENTS)
    900896    void registerAsTouchEventListenerForScrolling();
    901897    void unregisterAsTouchEventListenerForScrolling();
  • trunk/Source/WebCore/rendering/RenderLayerBacking.cpp

    r236424 r236459  
    561561{
    562562    for (auto* curr = &layer; curr; curr = curr->parent()) {
    563         if (curr->hasTransform() || curr->usesAcceleratedScrolling())
     563        if (curr->hasTransform() || curr->hasTouchScrollableOverflow())
    564564            return true;
    565565    }
    … …  
    687687
    688688    if (!renderer().view().needsLayout()) {
    689         bool usesCompositedScrolling = m_owningLayer.usesAcceleratedScrolling();
     689        bool usesCompositedScrolling = m_owningLayer.hasTouchScrollableOverflow();
    690690
    691691        // Our scrolling layer will clip.
  • trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp

    r236424 r236459  
    26642664        return true;
    26652665
    2666     return layer.usesAcceleratedScrolling();
     2666    return layer.hasTouchScrollableOverflow();
    26672667}
    26682668
    … …  
    27492749{
    27502750#if PLATFORM(IOS)
    2751     if (!layer.hasAcceleratedTouchScrolling())
     2751    if (!layer.canUseAcceleratedTouchScrolling())
    27522752        return false;
    27532753
Note: See TracChangeset for help on using the changeset viewer.