Remove remnants of iOS WK1 scrolling tree code
[WebKit-https.git] / Source / WebKit / UIProcess / RemoteLayerTree / RemoteScrollingTree.cpp
1 /*
2  * Copyright (C) 2014 Apple Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #include "config.h"
27 #include "RemoteScrollingTree.h"
28
29 #if ENABLE(ASYNC_SCROLLING)
30
31 #include "RemoteLayerTreeHost.h"
32 #include "RemoteScrollingCoordinatorProxy.h"
33 #include <WebCore/ScrollingTreeFixedNode.h>
34 #include <WebCore/ScrollingTreeFrameHostingNode.h>
35 #include <WebCore/ScrollingTreeStickyNode.h>
36
37 #if PLATFORM(IOS_FAMILY)
38 #include "ScrollingTreeFrameScrollingNodeRemoteIOS.h"
39 #include "ScrollingTreeOverflowScrollingNodeIOS.h"
40 #else
41 #include "ScrollingTreeFrameScrollingNodeRemoteMac.h"
42 #endif
43
44 namespace WebKit {
45 using namespace WebCore;
46
47 Ref<RemoteScrollingTree> RemoteScrollingTree::create(RemoteScrollingCoordinatorProxy& scrollingCoordinator)
48 {
49     return adoptRef(*new RemoteScrollingTree(scrollingCoordinator));
50 }
51
52 RemoteScrollingTree::RemoteScrollingTree(RemoteScrollingCoordinatorProxy& scrollingCoordinator)
53     : m_scrollingCoordinatorProxy(scrollingCoordinator)
54 {
55 }
56
57 RemoteScrollingTree::~RemoteScrollingTree()
58 {
59 }
60
61 ScrollingEventResult RemoteScrollingTree::tryToHandleWheelEvent(const PlatformWheelEvent& wheelEvent)
62 {
63     if (shouldHandleWheelEventSynchronously(wheelEvent))
64         return ScrollingEventResult::SendToMainThread;
65
66     if (willWheelEventStartSwipeGesture(wheelEvent))
67         return ScrollingEventResult::DidNotHandleEvent;
68
69     handleWheelEvent(wheelEvent);
70     return ScrollingEventResult::DidHandleEvent;
71 }
72
73 #if PLATFORM(MAC)
74 void RemoteScrollingTree::handleWheelEventPhase(PlatformWheelEventPhase phase)
75 {
76     // FIXME: hand off to m_scrollingCoordinatorProxy?
77 }
78 #endif
79
80 #if PLATFORM(IOS_FAMILY)
81 WebCore::FloatRect RemoteScrollingTree::fixedPositionRect()
82 {
83     return m_scrollingCoordinatorProxy.customFixedPositionRect();
84 }
85
86 void RemoteScrollingTree::scrollingTreeNodeWillStartPanGesture()
87 {
88     m_scrollingCoordinatorProxy.scrollingTreeNodeWillStartPanGesture();
89 }
90
91 void RemoteScrollingTree::scrollingTreeNodeWillStartScroll()
92 {
93     m_scrollingCoordinatorProxy.scrollingTreeNodeWillStartScroll();
94 }
95
96 void RemoteScrollingTree::scrollingTreeNodeDidEndScroll()
97 {
98     m_scrollingCoordinatorProxy.scrollingTreeNodeDidEndScroll();
99 }
100
101 #endif
102
103 void RemoteScrollingTree::scrollingTreeNodeDidScroll(ScrollingNodeID nodeID, const FloatPoint& scrollPosition, const Optional<FloatPoint>& layoutViewportOrigin, ScrollingLayerPositionAction scrollingLayerPositionAction)
104 {
105     m_scrollingCoordinatorProxy.scrollingTreeNodeDidScroll(nodeID, scrollPosition, layoutViewportOrigin, scrollingLayerPositionAction);
106 }
107
108 void RemoteScrollingTree::scrollingTreeNodeRequestsScroll(ScrollingNodeID nodeID, const FloatPoint& scrollPosition, bool representsProgrammaticScroll)
109 {
110     m_scrollingCoordinatorProxy.scrollingTreeNodeRequestsScroll(nodeID, scrollPosition, representsProgrammaticScroll);
111 }
112
113 Ref<ScrollingTreeNode> RemoteScrollingTree::createScrollingTreeNode(ScrollingNodeType nodeType, ScrollingNodeID nodeID)
114 {
115     switch (nodeType) {
116     case ScrollingNodeType::MainFrame:
117     case ScrollingNodeType::Subframe:
118 #if PLATFORM(IOS_FAMILY)
119         return ScrollingTreeFrameScrollingNodeRemoteIOS::create(*this, nodeType, nodeID);
120 #else
121         return ScrollingTreeFrameScrollingNodeRemoteMac::create(*this, nodeType, nodeID);
122 #endif
123     case ScrollingNodeType::FrameHosting:
124         return ScrollingTreeFrameHostingNode::create(*this, nodeID);
125     case ScrollingNodeType::Overflow:
126 #if PLATFORM(IOS_FAMILY)
127         return ScrollingTreeOverflowScrollingNodeIOS::create(*this, nodeID);
128 #else
129         ASSERT_NOT_REACHED();
130         break;
131 #endif
132     case ScrollingNodeType::Fixed:
133         return ScrollingTreeFixedNode::create(*this, nodeID);
134     case ScrollingNodeType::Sticky:
135         return ScrollingTreeStickyNode::create(*this, nodeID);
136     }
137     ASSERT_NOT_REACHED();
138     return ScrollingTreeFixedNode::create(*this, nodeID);
139 }
140
141 void RemoteScrollingTree::currentSnapPointIndicesDidChange(ScrollingNodeID nodeID, unsigned horizontal, unsigned vertical)
142 {
143     m_scrollingCoordinatorProxy.currentSnapPointIndicesDidChange(nodeID, horizontal, vertical);
144 }
145
146 void RemoteScrollingTree::handleMouseEvent(const WebCore::PlatformMouseEvent& event)
147 {
148 #if ENABLE(ASYNC_SCROLLING) && PLATFORM(MAC)
149     static_cast<ScrollingTreeFrameScrollingNodeRemoteMac&>(*rootNode()).handleMouseEvent(event);
150 #else
151     UNUSED_PARAM(event);
152 #endif
153 }
154
155 } // namespace WebKit
156
157 #endif // ENABLE(ASYNC_SCROLLING)