Changeset 236459 in webkit
- Timestamp:
- Sep 25, 2018, 8:49:20 AM (8 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 5 edited
-
ChangeLog (modified) (1 diff)
-
rendering/RenderLayer.cpp (modified) (7 diffs)
-
rendering/RenderLayer.h (modified) (3 diffs)
-
rendering/RenderLayerBacking.cpp (modified) (2 diffs)
-
rendering/RenderLayerCompositor.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r236450 r236459 1 2018-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 1 40 2018-09-24 Fujii Hironori <Hironori.Fujii@sony.com> 2 41 -
trunk/Source/WebCore/rendering/RenderLayer.cpp
r236424 r236459 1949 1949 } 1950 1950 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(); 1951 bool RenderLayer::canUseAcceleratedTouchScrolling() const 1952 { 1953 #if PLATFORM(IOS) && ENABLE(ACCELERATED_OVERFLOW_SCROLLING) 1954 return scrollsOverflow() && (renderer().style().useTouchOverflowScrolling() || renderer().settings().alwaysUseAcceleratedOverflowScroll()); 1959 1955 #else 1960 1956 return false; … … 1964 1960 bool RenderLayer::hasTouchScrollableOverflow() const 1965 1961 { 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) 1970 1966 bool RenderLayer::handleTouchEvent(const PlatformTouchEvent& touchEvent) 1971 1967 { 1972 1968 // If we have accelerated scrolling, let the scrolling be handled outside of WebKit. 1973 if ( usesAcceleratedScrolling())1969 if (hasTouchScrollableOverflow()) 1974 1970 return false; 1975 1971 1976 1972 return ScrollableArea::handleTouchEvent(touchEvent); 1977 1973 } 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 1991 1975 void RenderLayer::registerAsTouchEventListenerForScrolling() 1992 1976 { … … 2008 1992 #endif // ENABLE(IOS_TOUCH_EVENTS) 2009 1993 1994 // FIXME: this is only valid after we've made layers. 2010 1995 bool RenderLayer::usesCompositedScrolling() const 2011 1996 { … … 2013 1998 } 2014 1999 2000 // FIXME: this is only valid after we've made layers. 2015 2001 bool RenderLayer::usesAsyncScrolling() const 2016 2002 { 2017 return hasAcceleratedTouchScrolling() && usesCompositedScrolling();2003 return canUseAcceleratedTouchScrolling() && usesCompositedScrolling(); 2018 2004 } 2019 2005 … … 3389 3375 #if PLATFORM(IOS) 3390 3376 // Don't render (custom) scrollbars if we have accelerated scrolling. 3391 if ( hasAcceleratedTouchScrolling())3377 if (canUseAcceleratedTouchScrolling()) 3392 3378 return false; 3393 3379 #endif … … 6081 6067 || renderer.style().hasIsolation() 6082 6068 #if PLATFORM(IOS) 6083 || layer. hasAcceleratedTouchScrolling()6069 || layer.canUseAcceleratedTouchScrolling() 6084 6070 #endif 6085 6071 || (renderer.style().willChange() && renderer.style().willChange()->canCreateStackingContext()); … … 6415 6401 #if ENABLE(IOS_TOUCH_EVENTS) 6416 6402 if (addedOrRemoved) { 6417 if (isScrollable && ! hasAcceleratedTouchScrolling())6403 if (isScrollable && !canUseAcceleratedTouchScrolling()) 6418 6404 registerAsTouchEventListenerForScrolling(); 6419 6405 else { -
trunk/Source/WebCore/rendering/RenderLayer.h
r236424 r236459 252 252 253 253 #if PLATFORM(IOS) 254 #if ENABLE( TOUCH_EVENTS)254 #if ENABLE(IOS_TOUCH_EVENTS) 255 255 bool handleTouchEvent(const PlatformTouchEvent&) override; 256 256 #endif … … 265 265 bool requiresScrollBoundsOriginUpdate() const { return m_requiresScrollBoundsOriginUpdate; } 266 266 void setRequiresScrollBoundsOriginUpdate(bool requiresUpdate = true) { m_requiresScrollBoundsOriginUpdate = requiresUpdate; } 267 #endif 267 268 268 269 // 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; 270 271 // Returns true when there is actually scrollable overflow (requires layout to be up-to-date). 271 272 bool hasTouchScrollableOverflow() const; 272 #else273 bool hasAcceleratedTouchScrolling() const { return false; }274 bool hasTouchScrollableOverflow() const { return false; }275 #endif276 bool usesAcceleratedScrolling() const;277 273 278 274 int verticalScrollbarWidth(OverlayScrollbarSizeRelevancy = IgnoreOverlayScrollbarSize) const; … … 897 893 void logMockScrollAnimatorMessage(const String&) const override; 898 894 899 #if PLATFORM(IOS)895 #if ENABLE(IOS_TOUCH_EVENTS) 900 896 void registerAsTouchEventListenerForScrolling(); 901 897 void unregisterAsTouchEventListenerForScrolling(); -
trunk/Source/WebCore/rendering/RenderLayerBacking.cpp
r236424 r236459 561 561 { 562 562 for (auto* curr = &layer; curr; curr = curr->parent()) { 563 if (curr->hasTransform() || curr-> usesAcceleratedScrolling())563 if (curr->hasTransform() || curr->hasTouchScrollableOverflow()) 564 564 return true; 565 565 } … … 687 687 688 688 if (!renderer().view().needsLayout()) { 689 bool usesCompositedScrolling = m_owningLayer. usesAcceleratedScrolling();689 bool usesCompositedScrolling = m_owningLayer.hasTouchScrollableOverflow(); 690 690 691 691 // Our scrolling layer will clip. -
trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp
r236424 r236459 2664 2664 return true; 2665 2665 2666 return layer. usesAcceleratedScrolling();2666 return layer.hasTouchScrollableOverflow(); 2667 2667 } 2668 2668 … … 2749 2749 { 2750 2750 #if PLATFORM(IOS) 2751 if (!layer. hasAcceleratedTouchScrolling())2751 if (!layer.canUseAcceleratedTouchScrolling()) 2752 2752 return false; 2753 2753
Note:
See TracChangeset
for help on using the changeset viewer.