Changeset 240162 in webkit


Ignore:
Timestamp:
Jan 18, 2019 12:07:44 PM (5 years ago)
Author:
Antti Koivisto
Message:

Implement asynchronous frame scrolling for iOS
https://bugs.webkit.org/show_bug.cgi?id=193539
<rdar://problem/47379873>

Reviewed by Simon Fraser.

Source/WebCore:

This patch implements UIScrollView based frame scrolling on iOS, enabled by the "Async Frame Scrolling"
internal setting (still off by default).

  • page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.h:

(WebCore::ScrollingTreeFrameScrollingNodeIOS::scrollLayer const): Deleted.

  • page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm:

(WebCore::ScrollingTreeFrameScrollingNodeIOS::setScrollPosition):

Export ScrollingTreeFrameScrollingNodeIOS.

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::visibleRectForLayerFlushing const):
(WebCore::RenderLayerCompositor::frameViewDidChangeSize):
(WebCore::RenderLayerCompositor::updateScrollLayerClipping):

If we don't have a separate clip layer, just resize and position the scroll layer.

(WebCore::RenderLayerCompositor::updateRootLayerPosition):
(WebCore::RenderLayerCompositor::updateOverflowControlsLayers):
(WebCore::RenderLayerCompositor::ensureRootLayer):

Use GraphicsLayer::Type::Scrolling as the scroll layer type when async frame scrolling is enabled.
Don't create a separate clip layer since the scroll layer will handle clipping.

  • rendering/RenderLayerCompositor.h:

Source/WebKit:

Add a scrolling node type that can handle UIScrollView backed frames.
It basically just instantiates and forwards to the existing ScrollingTreeScrollingNodeDelegateIOS.

  • UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp:

(WebKit::RemoteScrollingTree::createScrollingTreeNode):

  • UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:

(WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.h: Added.
  • UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm: Added.

(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::create):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::ScrollingTreeFrameScrollingNodeRemoteIOS):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::~ScrollingTreeFrameScrollingNodeRemoteIOS):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateBeforeChildren):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateAfterChildren):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateLayersAfterAncestorChange):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::scrollPosition const):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::setScrollLayerPosition):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateLayersAfterDelegatedScroll):

  • WebKit.xcodeproj/project.pbxproj:

LayoutTests:

  • platform/ios-wk2/compositing/tiling/tiled-drawing-async-frame-scrolling-expected.txt:
Location:
trunk
Files:
2 added
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r240158 r240162  
     12019-01-18  Antti Koivisto  <antti@apple.com>
     2
     3        Implement asynchronous frame scrolling for iOS
     4        https://bugs.webkit.org/show_bug.cgi?id=193539
     5        <rdar://problem/47379873>
     6
     7        Reviewed by Simon Fraser.
     8
     9        * platform/ios-wk2/compositing/tiling/tiled-drawing-async-frame-scrolling-expected.txt:
     10
    1112019-01-18  Ali Juma  <ajuma@chromium.org>
    212
  • trunk/LayoutTests/platform/ios-wk2/compositing/tiling/tiled-drawing-async-frame-scrolling-expected.txt

    r225092 r240162  
    4141              (children 1
    4242                (GraphicsLayer
    43                   (anchor 0.00 0.00)
    4443                  (bounds 300.00 150.00)
    4544                  (backingStoreAttached 1)
    4645                  (visible rect 0.00, 0.00 300.00 x 150.00)
    47                   (coverage rect 0.00, 0.00 300.00 x 150.00)
     46                  (coverage rect -10.00, -10.00 800.00 x 600.00)
    4847                  (intersects coverage rect 1)
    4948                  (contentsScale 2.00)
    5049                  (children 1
    5150                    (GraphicsLayer
    52                       (backingStoreAttached 0)
    53                       (visible rect 0.00, 0.00 0.00 x 0.00)
    54                       (coverage rect 0.00, 0.00 300.00 x 150.00)
    55                       (intersects coverage rect 0)
     51                      (anchor 0.00 0.00)
     52                      (bounds 400.00 300.00)
     53                      (backingStoreAttached 1)
     54                      (visible rect 0.00, 0.00 400.00 x 300.00)
     55                      (coverage rect 0.00, 0.00 400.00 x 300.00)
     56                      (intersects coverage rect 1)
    5657                      (contentsScale 2.00)
    5758                      (children 1
    5859                        (GraphicsLayer
    59                           (anchor 0.00 0.00)
    6060                          (bounds 400.00 300.00)
     61                          (drawsContent 1)
    6162                          (backingStoreAttached 1)
    62                           (visible rect 0.00, 0.00 300.00 x 150.00)
    63                           (coverage rect 0.00, 0.00 300.00 x 150.00)
     63                          (visible rect 0.00, 0.00 400.00 x 300.00)
     64                          (coverage rect 0.00, 0.00 400.00 x 300.00)
    6465                          (intersects coverage rect 1)
    6566                          (contentsScale 2.00)
     67                          (tile cache coverage 0, 0 400 x 300)
     68                          (tile size 512 x 512)
     69                          (top left tile 0, 0 tiles grid 1 x 1)
     70                          (in window 1)
    6671                          (children 1
    6772                            (GraphicsLayer
    68                               (bounds 400.00 300.00)
    69                               (drawsContent 1)
    70                               (backingStoreAttached 1)
    71                               (visible rect 0.00, 0.00 300.00 x 150.00)
    72                               (coverage rect 0.00, 0.00 300.00 x 150.00)
    73                               (intersects coverage rect 1)
     73                              (backingStoreAttached 0)
     74                              (visible rect 0.00, 0.00 0.00 x 0.00)
     75                              (coverage rect 0.00, 0.00 400.00 x 300.00)
     76                              (intersects coverage rect 0)
    7477                              (contentsScale 2.00)
    75                               (tile cache coverage 0, 0 400 x 300)
    76                               (tile size 512 x 512)
    77                               (top left tile 0, 0 tiles grid 1 x 1)
    78                               (in window 1)
    79                               (children 1
    80                                 (GraphicsLayer
    81                                   (backingStoreAttached 0)
    82                                   (visible rect 0.00, 0.00 0.00 x 0.00)
    83                                   (coverage rect 0.00, 0.00 300.00 x 150.00)
    84                                   (intersects coverage rect 0)
    85                                   (contentsScale 2.00)
    86                                 )
    87                               )
    8878                            )
    8979                          )
     
    116106              (children 1
    117107                (GraphicsLayer
    118                   (anchor 0.00 0.00)
    119108                  (bounds 300.00 150.00)
    120109                  (backingStoreAttached 1)
    121110                  (visible rect 0.00, 0.00 300.00 x 150.00)
    122                   (coverage rect 0.00, 0.00 300.00 x 150.00)
     111                  (coverage rect -318.00, -10.00 800.00 x 600.00)
    123112                  (intersects coverage rect 1)
    124113                  (contentsScale 2.00)
    125114                  (children 1
    126115                    (GraphicsLayer
    127                       (backingStoreAttached 0)
    128                       (visible rect 0.00, 0.00 0.00 x 0.00)
    129                       (coverage rect 0.00, 0.00 300.00 x 150.00)
    130                       (intersects coverage rect 0)
     116                      (anchor 0.00 0.00)
     117                      (bounds 400.00 300.00)
     118                      (backingStoreAttached 1)
     119                      (visible rect 0.00, 0.00 400.00 x 300.00)
     120                      (coverage rect 0.00, 0.00 400.00 x 300.00)
     121                      (intersects coverage rect 1)
    131122                      (contentsScale 2.00)
    132123                      (children 1
    133124                        (GraphicsLayer
    134                           (anchor 0.00 0.00)
    135125                          (bounds 400.00 300.00)
     126                          (drawsContent 1)
    136127                          (backingStoreAttached 1)
    137                           (visible rect 0.00, 0.00 300.00 x 150.00)
    138                           (coverage rect 0.00, 0.00 300.00 x 150.00)
     128                          (visible rect 0.00, 0.00 400.00 x 300.00)
     129                          (coverage rect 0.00, 0.00 400.00 x 300.00)
    139130                          (intersects coverage rect 1)
    140131                          (contentsScale 2.00)
     132                          (tile cache coverage 0, 0 400 x 300)
     133                          (tile size 512 x 512)
     134                          (top left tile 0, 0 tiles grid 1 x 1)
     135                          (in window 1)
    141136                          (children 1
    142137                            (GraphicsLayer
    143                               (bounds 400.00 300.00)
    144                               (drawsContent 1)
    145                               (backingStoreAttached 1)
    146                               (visible rect 0.00, 0.00 300.00 x 150.00)
    147                               (coverage rect 0.00, 0.00 300.00 x 150.00)
    148                               (intersects coverage rect 1)
     138                              (backingStoreAttached 0)
     139                              (visible rect 0.00, 0.00 0.00 x 0.00)
     140                              (coverage rect 0.00, 0.00 400.00 x 300.00)
     141                              (intersects coverage rect 0)
    149142                              (contentsScale 2.00)
    150                               (tile cache coverage 0, 0 400 x 300)
    151                               (tile size 512 x 512)
    152                               (top left tile 0, 0 tiles grid 1 x 1)
    153                               (in window 1)
    154                               (children 1
    155                                 (GraphicsLayer
    156                                   (backingStoreAttached 0)
    157                                   (visible rect 0.00, 0.00 0.00 x 0.00)
    158                                   (coverage rect 0.00, 0.00 300.00 x 150.00)
    159                                   (intersects coverage rect 0)
    160                                   (contentsScale 2.00)
    161                                 )
    162                               )
    163143                            )
    164144                          )
     
    191171              (children 1
    192172                (GraphicsLayer
    193                   (anchor 0.00 0.00)
    194173                  (bounds 300.00 150.00)
    195174                  (backingStoreAttached 1)
    196175                  (visible rect 0.00, 0.00 300.00 x 150.00)
    197                   (coverage rect 0.00, 0.00 300.00 x 150.00)
     176                  (coverage rect -10.00, -169.00 800.00 x 600.00)
    198177                  (intersects coverage rect 1)
    199178                  (contentsScale 2.00)
    200179                  (children 1
    201180                    (GraphicsLayer
    202                       (backingStoreAttached 0)
    203                       (visible rect 0.00, 0.00 0.00 x 0.00)
    204                       (coverage rect 0.00, 0.00 300.00 x 150.00)
    205                       (intersects coverage rect 0)
     181                      (anchor 0.00 0.00)
     182                      (bounds 400.00 300.00)
     183                      (backingStoreAttached 1)
     184                      (visible rect 0.00, 0.00 400.00 x 300.00)
     185                      (coverage rect 0.00, 0.00 400.00 x 300.00)
     186                      (intersects coverage rect 1)
    206187                      (contentsScale 2.00)
    207188                      (children 1
    208189                        (GraphicsLayer
    209                           (anchor 0.00 0.00)
    210190                          (bounds 400.00 300.00)
     191                          (drawsContent 1)
    211192                          (backingStoreAttached 1)
    212                           (visible rect 0.00, 0.00 300.00 x 150.00)
    213                           (coverage rect 0.00, 0.00 300.00 x 150.00)
     193                          (visible rect 0.00, 0.00 400.00 x 300.00)
     194                          (coverage rect 0.00, 0.00 400.00 x 300.00)
    214195                          (intersects coverage rect 1)
    215196                          (contentsScale 2.00)
     197                          (tile cache coverage 0, 0 400 x 300)
     198                          (tile size 512 x 512)
     199                          (top left tile 0, 0 tiles grid 1 x 1)
     200                          (in window 1)
    216201                          (children 1
    217202                            (GraphicsLayer
    218                               (bounds 400.00 300.00)
    219                               (drawsContent 1)
    220                               (backingStoreAttached 1)
    221                               (visible rect 0.00, 0.00 300.00 x 150.00)
    222                               (coverage rect 0.00, 0.00 300.00 x 150.00)
    223                               (intersects coverage rect 1)
     203                              (backingStoreAttached 0)
     204                              (visible rect 0.00, 0.00 0.00 x 0.00)
     205                              (coverage rect 0.00, 0.00 400.00 x 300.00)
     206                              (intersects coverage rect 0)
    224207                              (contentsScale 2.00)
    225                               (tile cache coverage 0, 0 400 x 300)
    226                               (tile size 512 x 512)
    227                               (top left tile 0, 0 tiles grid 1 x 1)
    228                               (in window 1)
    229                               (children 1
    230                                 (GraphicsLayer
    231                                   (backingStoreAttached 0)
    232                                   (visible rect 0.00, 0.00 0.00 x 0.00)
    233                                   (coverage rect 0.00, 0.00 300.00 x 150.00)
    234                                   (intersects coverage rect 0)
    235                                   (contentsScale 2.00)
    236                                 )
    237                               )
    238208                            )
    239209                          )
  • trunk/Source/WebCore/ChangeLog

    r240158 r240162  
     12019-01-18  Antti Koivisto  <antti@apple.com>
     2
     3        Implement asynchronous frame scrolling for iOS
     4        https://bugs.webkit.org/show_bug.cgi?id=193539
     5        <rdar://problem/47379873>
     6
     7        Reviewed by Simon Fraser.
     8
     9        This patch implements UIScrollView based frame scrolling on iOS, enabled by the "Async Frame Scrolling"
     10        internal setting (still off by default).
     11
     12        * page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.h:
     13        (WebCore::ScrollingTreeFrameScrollingNodeIOS::scrollLayer const): Deleted.
     14        * page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm:
     15        (WebCore::ScrollingTreeFrameScrollingNodeIOS::setScrollPosition):
     16
     17        Export ScrollingTreeFrameScrollingNodeIOS.
     18
     19        * rendering/RenderLayerCompositor.cpp:
     20        (WebCore::RenderLayerCompositor::visibleRectForLayerFlushing const):
     21        (WebCore::RenderLayerCompositor::frameViewDidChangeSize):
     22        (WebCore::RenderLayerCompositor::updateScrollLayerClipping):
     23
     24        If we don't have a separate clip layer, just resize and position the scroll layer.
     25
     26        (WebCore::RenderLayerCompositor::updateRootLayerPosition):
     27        (WebCore::RenderLayerCompositor::updateOverflowControlsLayers):
     28        (WebCore::RenderLayerCompositor::ensureRootLayer):
     29
     30        Use GraphicsLayer::Type::Scrolling as the scroll layer type when async frame scrolling is enabled.
     31        Don't create a separate clip layer since the scroll layer will handle clipping.
     32
     33        * rendering/RenderLayerCompositor.h:
     34
    1352019-01-18  Ali Juma  <ajuma@chromium.org>
    236
  • trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.h

    r237754 r240162  
    3535namespace WebCore {
    3636
    37 class ScrollingTreeFrameScrollingNodeIOS : public ScrollingTreeFrameScrollingNode {
     37class WEBCORE_EXPORT ScrollingTreeFrameScrollingNodeIOS : public ScrollingTreeFrameScrollingNode {
    3838public:
    39     WEBCORE_EXPORT static Ref<ScrollingTreeFrameScrollingNodeIOS> create(ScrollingTree&, ScrollingNodeType, ScrollingNodeID);
     39    static Ref<ScrollingTreeFrameScrollingNodeIOS> create(ScrollingTree&, ScrollingNodeType, ScrollingNodeID);
    4040    virtual ~ScrollingTreeFrameScrollingNodeIOS();
    4141
     
    5656    void updateLayersAfterAncestorChange(const ScrollingTreeNode& changedNode, const FloatRect& fixedPositionRect, const FloatSize& cumulativeDelta) override;
    5757
     58    void setScrollPosition(const FloatPoint&) override;
    5859    void setScrollLayerPosition(const FloatPoint&, const FloatRect& layoutViewport) override;
    5960
     
    6162    FloatPoint maximumScrollPosition() const override;
    6263
     64    CALayer *scrollLayer() const;
     65
    6366private:
    6467    void updateChildNodesAfterScroll(const FloatPoint&);
    65     CALayer *scrollLayer() const { return m_scrollLayer.get(); }
    6668
    6769    RetainPtr<CALayer> m_scrollLayer;
  • trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm

    r239427 r240162  
    105105}
    106106
     107void ScrollingTreeFrameScrollingNodeIOS::setScrollPosition(const FloatPoint& scrollPosition)
     108{
     109    ScrollingTreeFrameScrollingNode::setScrollPosition(scrollPosition);
     110}
     111
    107112void ScrollingTreeFrameScrollingNodeIOS::setScrollPositionWithoutContentEdgeConstraints(const FloatPoint& scrollPosition)
    108113{
     
    211216}
    212217
     218CALayer *ScrollingTreeFrameScrollingNodeIOS::scrollLayer() const
     219{
     220    return m_scrollLayer.get();
     221}
     222
    213223} // namespace WebCore
    214224
  • trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp

    r240140 r240162  
    448448    return frameView.exposedContentRect();
    449449#else
    450     // Having a m_clipLayer indicates that we're doing scrolling via GraphicsLayers.
    451     FloatRect visibleRect = m_clipLayer ? FloatRect({ }, frameView.sizeForVisibleContent()) : frameView.visibleContentRect();
     450    // Having a m_scrollLayer indicates that we're doing scrolling via GraphicsLayers.
     451    FloatRect visibleRect = m_scrollLayer ? FloatRect({ }, frameView.sizeForVisibleContent()) : frameView.visibleContentRect();
    452452
    453453    if (frameView.viewExposedRect())
     
    17871787        layer->setNeedsCompositingGeometryUpdate();
    17881788
    1789     if (m_clipLayer) {
    1790         const FrameView& frameView = m_renderView.frameView();
    1791         m_clipLayer->setSize(frameView.sizeForVisibleContent());
    1792         m_clipLayer->setPosition(positionForClipLayer());
    1793 
     1789    if (m_scrollLayer) {
     1790        updateScrollLayerClipping();
    17941791        frameViewDidScroll();
    17951792        updateOverflowControlsLayers();
     
    17971794#if ENABLE(RUBBER_BANDING)
    17981795        if (m_layerForOverhangAreas) {
     1796            auto& frameView = m_renderView.frameView();
    17991797            m_layerForOverhangAreas->setSize(frameView.frameRect().size());
    1800             m_layerForOverhangAreas->setPosition(FloatPoint(0, m_renderView.frameView().topContentInset()));
     1798            m_layerForOverhangAreas->setPosition(FloatPoint(0, frameView.topContentInset()));
    18011799        }
    18021800#endif
     
    18211819    if (auto* fixedBackgroundLayer = fixedRootBackgroundLayer())
    18221820        fixedBackgroundLayer->setPosition(frameView.scrollPositionForFixedPosition());
     1821}
     1822
     1823void RenderLayerCompositor::updateScrollLayerClipping()
     1824{
     1825    auto* layerForClipping = this->layerForClipping();
     1826    if (!layerForClipping)
     1827        return;
     1828
     1829    layerForClipping->setSize(m_renderView.frameView().sizeForVisibleContent());
     1830    layerForClipping->setPosition(positionForClipLayer());
    18231831}
    18241832
     
    20522060        m_rootContentLayer->setAnchorPoint(FloatPoint3D());
    20532061    }
    2054     if (m_clipLayer) {
    2055         m_clipLayer->setSize(m_renderView.frameView().sizeForVisibleContent());
    2056         m_clipLayer->setPosition(positionForClipLayer());
    2057     }
     2062
     2063    updateScrollLayerClipping();
    20582064
    20592065#if ENABLE(RUBBER_BANDING)
     
    32883294            // We want the overhang areas layer to be positioned below the frame contents,
    32893295            // so insert it below the clip layer.
    3290             m_overflowControlsHostLayer->addChildBelow(*m_layerForOverhangAreas, m_clipLayer.get());
     3296            m_overflowControlsHostLayer->addChildBelow(*m_layerForOverhangAreas, layerForClipping());
    32913297        }
    32923298    } else
     
    34003406            m_overflowControlsHostLayer->setName("overflow controls host");
    34013407
    3402             // Create a clipping layer if this is an iframe
    3403             m_clipLayer = GraphicsLayer::create(graphicsLayerFactory(), *this);
    3404             m_clipLayer->setName("frame clipping");
    3405             m_clipLayer->setMasksToBounds(true);
    3406            
    3407             m_scrollLayer = GraphicsLayer::create(graphicsLayerFactory(), *this);
     3408            auto scrollLayerType = GraphicsLayer::Type::Normal;
     3409#if PLATFORM(IOS_FAMILY)
     3410            if (m_renderView.settings().asyncFrameScrollingEnabled())
     3411                scrollLayerType = GraphicsLayer::Type::Scrolling;
     3412#endif
     3413            m_scrollLayer = GraphicsLayer::create(graphicsLayerFactory(), *this, scrollLayerType);
    34083414            m_scrollLayer->setName("frame scrolling");
    34093415
    3410             // Hook them up
    3411             m_overflowControlsHostLayer->addChild(*m_clipLayer);
    3412             m_clipLayer->addChild(*m_scrollLayer);
     3416            if (scrollLayerType == GraphicsLayer::Type::Scrolling) {
     3417                // Scroll layer clips so there is no need for a separate clipping layer.
     3418                m_overflowControlsHostLayer->addChild(*m_scrollLayer);
     3419            } else {
     3420                m_clipLayer = GraphicsLayer::create(graphicsLayerFactory(), *this);
     3421                m_clipLayer->setName("frame clipping");
     3422                m_clipLayer->setMasksToBounds(true);
     3423                m_clipLayer->setAnchorPoint(FloatPoint3D());
     3424
     3425                m_clipLayer->addChild(*m_scrollLayer);
     3426                m_overflowControlsHostLayer->addChild(*m_clipLayer);
     3427            }
     3428
    34133429            m_scrollLayer->addChild(*m_rootContentLayer);
    34143430
    3415             m_clipLayer->setSize(m_renderView.frameView().sizeForVisibleContent());
    3416             m_clipLayer->setPosition(positionForClipLayer());
    3417             m_clipLayer->setAnchorPoint(FloatPoint3D());
    3418 
     3431            updateScrollLayerClipping();
    34193432            updateOverflowControlsLayers();
    34203433
  • trunk/Source/WebCore/rendering/RenderLayerCompositor.h

    r240140 r240162  
    237237    GraphicsLayer* rootContentLayer() const { return m_rootContentLayer.get(); }
    238238
     239    GraphicsLayer* layerForClipping() const {  return m_clipLayer ? m_clipLayer.get() : m_scrollLayer.get();  }
    239240
    240241#if ENABLE(RUBBER_BANDING)
     
    433434
    434435    void updateScrollLayerPosition();
     436    void updateScrollLayerClipping();
    435437
    436438    FloatPoint positionForClipLayer() const;
  • trunk/Source/WebKit/ChangeLog

    r240161 r240162  
     12019-01-18  Antti Koivisto  <antti@apple.com>
     2
     3        Implement asynchronous frame scrolling for iOS
     4        https://bugs.webkit.org/show_bug.cgi?id=193539
     5        <rdar://problem/47379873>
     6
     7        Reviewed by Simon Fraser.
     8
     9        Add a scrolling node type that can handle UIScrollView backed frames.
     10        It basically just instantiates and forwards to the existing ScrollingTreeScrollingNodeDelegateIOS.
     11
     12        * UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp:
     13        (WebKit::RemoteScrollingTree::createScrollingTreeNode):
     14        * UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
     15        (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):
     16        * UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.h: Added.
     17        * UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm: Added.
     18        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::create):
     19        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::ScrollingTreeFrameScrollingNodeRemoteIOS):
     20        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::~ScrollingTreeFrameScrollingNodeRemoteIOS):
     21        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateBeforeChildren):
     22        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateAfterChildren):
     23        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateLayersAfterAncestorChange):
     24        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::scrollPosition const):
     25        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::setScrollLayerPosition):
     26        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateLayersAfterDelegatedScroll):
     27        * WebKit.xcodeproj/project.pbxproj:
     28
    1292019-01-18  Chris Dumez  <cdumez@apple.com>
    230
  • trunk/Source/WebKit/SourcesCocoa.txt

    r240100 r240162  
    455455UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm
    456456UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm
     457UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm
    457458UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.mm
    458459UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm
  • trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp

    r239689 r240162  
    3535
    3636#if PLATFORM(IOS_FAMILY)
     37#include "ScrollingTreeFrameScrollingNodeRemoteIOS.h"
    3738#include "ScrollingTreeOverflowScrollingNodeIOS.h"
    3839#include <WebCore/ScrollingTreeFrameScrollingNodeIOS.h>
     
    116117    case ScrollingNodeType::Subframe:
    117118#if PLATFORM(IOS_FAMILY)
    118         return ScrollingTreeFrameScrollingNodeIOS::create(*this, nodeType, nodeID);
     119        return ScrollingTreeFrameScrollingNodeRemoteIOS::create(*this, nodeType, nodeID);
    119120#else
    120121        return ScrollingTreeFrameScrollingNodeRemoteMac::create(*this, nodeType, nodeID);
  • trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm

    r239548 r240162  
    6969                scrollingStateNode.setLayer(layerTreeHost.layerForID(scrollingStateNode.layer()));
    7070
     71            if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::ScrolledContentsLayer))
     72                scrollingStateNode.setScrolledContentsLayer(layerTreeHost.layerForID(scrollingStateNode.scrolledContentsLayer()));
     73
    7174            if (scrollingStateNode.hasChangedProperty(ScrollingStateFrameScrollingNode::CounterScrollingLayer))
    7275                scrollingStateNode.setCounterScrollingLayer(layerTreeHost.layerForID(scrollingStateNode.counterScrollingLayer()));
  • trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj

    r240156 r240162  
    15951595                E489D28C1A0A2DB80078C06A /* NetworkCacheCoders.h in Headers */ = {isa = PBXBuildFile; fileRef = E489D2851A0A2DB80078C06A /* NetworkCacheCoders.h */; };
    15961596                E49D40D71AD3FB170066B7B9 /* NetworkCacheBlobStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = E49D40D61AD3FB170066B7B9 /* NetworkCacheBlobStorage.h */; };
     1597                E4D54D0421F1D72D007E3C36 /* ScrollingTreeFrameScrollingNodeRemoteIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = E40C1F9321F0B96E00530718 /* ScrollingTreeFrameScrollingNodeRemoteIOS.h */; };
    15971598                E4E57F6B21A83B1200345F3C /* RemoteLayerTreeNode.h in Headers */ = {isa = PBXBuildFile; fileRef = E4E57F6A21A83B1100345F3C /* RemoteLayerTreeNode.h */; };
    15981599                E4E864931B16750700C82F40 /* VersionChecks.h in Headers */ = {isa = PBXBuildFile; fileRef = E4E8648E1B1673FB00C82F40 /* VersionChecks.h */; };
     
    44464447                E404907421DE65F70037F0DB /* ScrollerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ScrollerMac.mm; sourceTree = "<group>"; };
    44474448                E404907521DE65F70037F0DB /* ScrollerMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollerMac.h; sourceTree = "<group>"; };
     4449                E40C1F9321F0B96E00530718 /* ScrollingTreeFrameScrollingNodeRemoteIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollingTreeFrameScrollingNodeRemoteIOS.h; sourceTree = "<group>"; };
     4450                E40C1F9521F0B97F00530718 /* ScrollingTreeFrameScrollingNodeRemoteIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ScrollingTreeFrameScrollingNodeRemoteIOS.mm; sourceTree = "<group>"; };
    44484451                E413F59B1AC1ADB600345360 /* NetworkCacheEntry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkCacheEntry.h; sourceTree = "<group>"; };
    44494452                E413F59E1AC1AF9D00345360 /* NetworkCacheEntry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkCacheEntry.cpp; sourceTree = "<group>"; };
     
    55185521                                2DC18FB2218A6E9E0025A88D /* RemoteLayerTreeViews.mm */,
    55195522                                0F0C365B18C05CA100F607D7 /* RemoteScrollingCoordinatorProxyIOS.mm */,
     5523                                E40C1F9321F0B96E00530718 /* ScrollingTreeFrameScrollingNodeRemoteIOS.h */,
     5524                                E40C1F9521F0B97F00530718 /* ScrollingTreeFrameScrollingNodeRemoteIOS.mm */,
    55205525                                0F931C1A18C5711900DBA7C3 /* ScrollingTreeOverflowScrollingNodeIOS.h */,
    55215526                                0F931C1B18C5711900DBA7C3 /* ScrollingTreeOverflowScrollingNodeIOS.mm */,
     
    88598864                                1A81B38518BD673A0007FDAC /* _WKVisitedLinkStoreInternal.h in Headers */,
    88608865                                1AE286781C7E76510069AC4F /* _WKWebsiteDataSize.h in Headers */,
     8866                                E4D54D0421F1D72D007E3C36 /* ScrollingTreeFrameScrollingNodeRemoteIOS.h in Headers */,
    88618867                                1AE286801C7F92C00069AC4F /* _WKWebsiteDataSizeInternal.h in Headers */,
    88628868                                1AFB4C721ADF155D00B33339 /* _WKWebsiteDataStore.h in Headers */,
Note: See TracChangeset for help on using the changeset viewer.