Title: [161387] trunk/Source
Revision
161387
Author
[email protected]
Date
2014-01-06 16:57:23 -0800 (Mon, 06 Jan 2014)

Log Message

Hook up the RemoteScrollingCoordinator
https://bugs.webkit.org/show_bug.cgi?id=126547

Source/WebCore:

Reviewed by Tim Horton.

Export lots of scrolling-related symbols for use by WebKit2.

* WebCore.exp.in:

Source/WebKit2:

Reviewed by Tim Horton.

Hook up the RemoteScrollingCoordinator in WebKit2.

When the RemoteLayerTreeDrawingArea is in use, WebPageProxy creates
a RemoteScrollingCoordinator, and hands it mouseWheel events. It then
scrolls via a RemoteScrollingTree constructed from state tree commits from the
WebProcess.

Scrolling tree commits happen via a transaction received by RemoteLayerTreeDrawingAreaProxy,
atomically with layer tree transactions.

* Shared/Scrolling/RemoteScrollingCoordinatorTransaction.cpp:
(WebKit::RemoteScrollingCoordinatorTransaction::encode): Fix encoding for some
cases seen in WebKitTestRunner where a page has no ScrollingCoordinator.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::initializeWebPage): Create the RemoteScrollingCoordinatorProxy
when using a remote layer tree drawing area.
(WebKit::WebPageProxy::handleWheelEvent): Pass to the scrolling coordinator.
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::scrollingCoordinatorProxy):
* UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h: Include the RemoteScrollingCoordinatorTransaction.
* UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.messages.in:
* UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
* UIProcess/mac/RemoteLayerTreeHost.mm:
(WebKit::RemoteLayerTreeHost::getLayer): It's valid to get a 0 layerID (e.g. when
a layer disappears) so handle this case.
* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::createScrollingCoordinator): Override to create the
RemoteScrollingCoordinator in the WebProcess.
* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::scrollingCoordinator): Not inline to avoid polluting the
header with #includes.
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h: Say that we want a ScrollingCoordinator.
* WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
(WebKit::RemoteLayerTreeDrawingArea::flushLayers): Add the scrollingTransaction to the
message.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (161386 => 161387)


--- trunk/Source/WebCore/ChangeLog	2014-01-07 00:56:23 UTC (rev 161386)
+++ trunk/Source/WebCore/ChangeLog	2014-01-07 00:57:23 UTC (rev 161387)
@@ -1,3 +1,14 @@
+2014-01-06  Simon Fraser  <[email protected]>
+
+        Hook up the RemoteScrollingCoordinator
+        https://bugs.webkit.org/show_bug.cgi?id=126547
+
+        Reviewed by Tim Horton.
+
+        Export lots of scrolling-related symbols for use by WebKit2.
+
+        * WebCore.exp.in:
+
 2014-01-06  Seokju Kwon  <[email protected]>
 
         Web Inspector: Remove support for FileSystem in Frontend.

Modified: trunk/Source/WebCore/WebCore.exp.in (161386 => 161387)


--- trunk/Source/WebCore/WebCore.exp.in	2014-01-07 00:56:23 UTC (rev 161386)
+++ trunk/Source/WebCore/WebCore.exp.in	2014-01-07 00:57:23 UTC (rev 161387)
@@ -1001,6 +1001,7 @@
 __ZN7WebCore4Page33synchronousScrollingReasonsAsTextEv
 __ZN7WebCore4Page32setMemoryCacheClientCallsEnabledEb
 __ZN7WebCore4Page35resumeActiveDOMObjectsAndAnimationsEv
+__ZN7WebCore4Page20scrollingCoordinatorEv
 __ZN7WebCore4Page36setShouldSuppressScrollbarAnimationsEb
 __ZN7WebCore4Page36suspendActiveDOMObjectsAndAnimationsEv
 __ZN7WebCore4Page37setInLowQualityImageInterpolationModeEb
@@ -2863,13 +2864,60 @@
 #endif
 
 #if ENABLE(ASYNC_SCROLLING)
+__ZN7WebCore13ScrollingTree16handleWheelEventERKNS_18PlatformWheelEventE
+__ZN7WebCore13ScrollingTree18commitNewTreeStateEN3WTF10PassOwnPtrINS_18ScrollingStateTreeEEE
 __ZN7WebCore13ScrollingTree21setCanRubberBandStateEbbbb
+__ZN7WebCore13ScrollingTree31willWheelEventStartSwipeGestureERKNS_18PlatformWheelEventE
+__ZN7WebCore13ScrollingTree35shouldHandleWheelEventSynchronouslyERKNS_18PlatformWheelEventE
 __ZN7WebCore13ScrollingTree37setScrollingPerformanceLoggingEnabledEb
+__ZN7WebCore13ScrollingTreeC2Ev
 __ZN7WebCore13ScrollingTreeD1Ev
+__ZN7WebCore13ScrollingTreeD2Ev
 __ZN7WebCore15ScrollingThread15dispatchBarrierERKN3WTF8FunctionIFvvEEE
 __ZN7WebCore15ScrollingThread8dispatchERKN3WTF8FunctionIFvvEEE
+__ZN7WebCore18ScrollingStateNode8setLayerERKNS_19LayerRepresentationE
+__ZN7WebCore18ScrollingStateTree10attachNodeENS_17ScrollingNodeTypeEyy
+__ZN7WebCore18ScrollingStateTree14stateNodeForIDEy
+__ZN7WebCore18ScrollingStateTree15setRemovedNodesEN3WTF6VectorIyLm0ENS1_15CrashOnOverflowEEE
+__ZN7WebCore18ScrollingStateTree6commitENS_19LayerRepresentation4TypeE
+__ZN7WebCore18ScrollingStateTree6createEPNS_25AsyncScrollingCoordinatorE
+__ZN7WebCore18ScrollingStateTreeD1Ev
+__ZN7WebCore20ScrollingCoordinator13pageDestroyedEv
 __ZN7WebCore20ScrollingCoordinator45setForceSynchronousScrollLayerPositionUpdatesEb
-__ZN7WebCore4Page20scrollingCoordinatorEv
+__ZN7WebCore22ScrollingTreeFixedNode6createERNS_13ScrollingTreeEy
+__ZN7WebCore23ScrollingStateFixedNode17updateConstraintsERKNS_32FixedPositionViewportConstraintsE
+__ZN7WebCore23ScrollingTreeStickyNode6createERNS_13ScrollingTreeEy
+__ZN7WebCore24ScrollingStateStickyNode17updateConstraintsERKNS_33StickyPositionViewportConstraintsE
+__ZN7WebCore20ScrollingCoordinator35scheduleUpdateScrollPositionForNodeEyRKNS_8IntPointEbNS_31SetOrSyncScrollingLayerPositionE
+__ZN7WebCore25AsyncScrollingCoordinator14clearStateTreeEv
+__ZN7WebCore25AsyncScrollingCoordinator17attachToStateTreeENS_17ScrollingNodeTypeEyy
+__ZN7WebCore25AsyncScrollingCoordinator18syncChildPositionsERKNS_10LayoutRectE
+__ZN7WebCore25AsyncScrollingCoordinator19detachFromStateTreeEy
+__ZN7WebCore25AsyncScrollingCoordinator19updateScrollingNodeEyPNS_13GraphicsLayerES2_
+__ZN7WebCore25AsyncScrollingCoordinator22frameViewLayoutUpdatedEPNS_9FrameViewE
+__ZNK7WebCore25AsyncScrollingCoordinator24scrollingStateTreeAsTextEv
+__ZN7WebCore25AsyncScrollingCoordinator27frameViewRootLayerDidChangeEPNS_9FrameViewE
+__ZN7WebCore25AsyncScrollingCoordinator27requestScrollPositionUpdateEPNS_9FrameViewERKNS_8IntPointE
+__ZN7WebCore25AsyncScrollingCoordinator29updateViewportConstrainedNodeEyRKNS_19ViewportConstraintsEPNS_13GraphicsLayerE
+__ZN7WebCore25AsyncScrollingCoordinator30setSynchronousScrollingReasonsEj
+__ZN7WebCore25AsyncScrollingCoordinator37scrollableAreaScrollbarLayerDidChangeEPNS_14ScrollableAreaENS_20ScrollbarOrientationE
+__ZN7WebCore25AsyncScrollingCoordinator43recomputeWheelEventHandlerCountForFrameViewEPNS_9FrameViewE
+__ZN7WebCore25AsyncScrollingCoordinatorC2EPNS_4PageE
+__ZN7WebCore25AsyncScrollingCoordinatorD2Ev
+__ZN7WebCore27ScrollingStateScrollingNode14setFooterLayerERKNS_19LayerRepresentationE
+__ZN7WebCore27ScrollingStateScrollingNode14setHeaderLayerERKNS_19LayerRepresentationE
+__ZN7WebCore27ScrollingStateScrollingNode15setFooterHeightEi
+__ZN7WebCore27ScrollingStateScrollingNode15setHeaderHeightEi
+__ZN7WebCore27ScrollingStateScrollingNode15setScrollOriginERKNS_8IntPointE
+__ZN7WebCore27ScrollingStateScrollingNode15setViewportRectERKNS_7IntRectE
+__ZN7WebCore27ScrollingStateScrollingNode19setFrameScaleFactorEf
+__ZN7WebCore27ScrollingStateScrollingNode20setTotalContentsSizeERKNS_7IntSizeE
+__ZN7WebCore27ScrollingStateScrollingNode24setCounterScrollingLayerERKNS_19LayerRepresentationE
+__ZN7WebCore27ScrollingStateScrollingNode25setWheelEventHandlerCountEj
+__ZN7WebCore27ScrollingStateScrollingNode27setScrollableAreaParametersERKNS_24ScrollableAreaParametersE
+__ZN7WebCore27ScrollingStateScrollingNode30setSynchronousScrollingReasonsEj
+__ZN7WebCore27ScrollingStateScrollingNode33setScrollBehaviorForFixedElementsENS_30ScrollBehaviorForFixedElementsE
+__ZN7WebCore29ScrollingTreeScrollingNodeMac6createERNS_13ScrollingTreeEy
 #endif
 
 #if ENABLE(VIDEO)

Modified: trunk/Source/WebKit2/ChangeLog (161386 => 161387)


--- trunk/Source/WebKit2/ChangeLog	2014-01-07 00:56:23 UTC (rev 161386)
+++ trunk/Source/WebKit2/ChangeLog	2014-01-07 00:57:23 UTC (rev 161387)
@@ -1,3 +1,50 @@
+2014-01-06  Simon Fraser  <[email protected]>
+
+        Hook up the RemoteScrollingCoordinator
+        https://bugs.webkit.org/show_bug.cgi?id=126547
+
+        Reviewed by Tim Horton.
+        
+        Hook up the RemoteScrollingCoordinator in WebKit2.
+        
+        When the RemoteLayerTreeDrawingArea is in use, WebPageProxy creates
+        a RemoteScrollingCoordinator, and hands it mouseWheel events. It then
+        scrolls via a RemoteScrollingTree constructed from state tree commits from the
+        WebProcess.
+        
+        Scrolling tree commits happen via a transaction received by RemoteLayerTreeDrawingAreaProxy,
+        atomically with layer tree transactions.
+
+        * Shared/Scrolling/RemoteScrollingCoordinatorTransaction.cpp:
+        (WebKit::RemoteScrollingCoordinatorTransaction::encode): Fix encoding for some
+        cases seen in WebKitTestRunner where a page has no ScrollingCoordinator.
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::initializeWebPage): Create the RemoteScrollingCoordinatorProxy
+        when using a remote layer tree drawing area.
+        (WebKit::WebPageProxy::handleWheelEvent): Pass to the scrolling coordinator.
+        * UIProcess/WebPageProxy.h:
+        (WebKit::WebPageProxy::scrollingCoordinatorProxy):
+        * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h: Include the RemoteScrollingCoordinatorTransaction.
+        * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.messages.in:
+        * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:
+        (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
+        * UIProcess/mac/RemoteLayerTreeHost.mm:
+        (WebKit::RemoteLayerTreeHost::getLayer): It's valid to get a 0 layerID (e.g. when
+        a layer disappears) so handle this case.
+        * WebKit2.xcodeproj/project.pbxproj:
+        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
+        (WebKit::WebChromeClient::createScrollingCoordinator): Override to create the
+        RemoteScrollingCoordinator in the WebProcess.
+        * WebProcess/WebCoreSupport/WebChromeClient.h:
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::scrollingCoordinator): Not inline to avoid polluting the
+        header with #includes.
+        * WebProcess/WebPage/WebPage.h:
+        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h: Say that we want a ScrollingCoordinator.
+        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
+        (WebKit::RemoteLayerTreeDrawingArea::flushLayers): Add the scrollingTransaction to the
+        message.
+
 2014-01-06  Jaehun Lim  <[email protected]>
 
         Use hasEnabledVerticalScrollbar instead of hasEnabledHorizontalScrollbar.

Modified: trunk/Source/WebKit2/Shared/Scrolling/RemoteScrollingCoordinatorTransaction.cpp (161386 => 161387)


--- trunk/Source/WebKit2/Shared/Scrolling/RemoteScrollingCoordinatorTransaction.cpp	2014-01-07 00:56:23 UTC (rev 161386)
+++ trunk/Source/WebKit2/Shared/Scrolling/RemoteScrollingCoordinatorTransaction.cpp	2014-01-07 00:57:23 UTC (rev 161387)
@@ -230,12 +230,16 @@
 
 void RemoteScrollingCoordinatorTransaction::encode(IPC::ArgumentEncoder& encoder) const
 {
-    encoder << m_scrollingStateTree->nodeCount();
-    
-    if (const ScrollingStateNode* rootNode = m_scrollingStateTree->rootStateNode())
-        encodeNodeAndDescendants(encoder, *rootNode);
-    
-    encoder << m_scrollingStateTree->removedNodes();
+    int numNodes = m_scrollingStateTree ? m_scrollingStateTree->nodeCount() : 0;
+    encoder << numNodes;
+
+    if (m_scrollingStateTree) {
+        if (const ScrollingStateNode* rootNode = m_scrollingStateTree->rootStateNode())
+            encodeNodeAndDescendants(encoder, *rootNode);
+
+        encoder << m_scrollingStateTree->removedNodes();
+    } else
+        encoder << Vector<ScrollingNodeID>();
 }
 
 bool RemoteScrollingCoordinatorTransaction::decode(IPC::ArgumentDecoder& decoder, RemoteScrollingCoordinatorTransaction& transaction)

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (161386 => 161387)


--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2014-01-07 00:56:23 UTC (rev 161386)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2014-01-07 00:57:23 UTC (rev 161387)
@@ -61,6 +61,7 @@
 #include "WebCoreArgumentCoders.h"
 #include "WebEditCommandProxy.h"
 #include "WebEvent.h"
+#include "WebEventConversion.h"
 #include "WebFormSubmissionListenerProxy.h"
 #include "WebFramePolicyListenerProxy.h"
 #include "WebFullScreenManagerProxy.h"
@@ -93,6 +94,10 @@
 #include <wtf/NeverDestroyed.h>
 #include <stdio.h>
 
+#if ENABLE(ASYNC_SCROLLING)
+#include "RemoteScrollingCoordinatorProxy.h"
+#endif
+
 #if USE(COORDINATED_GRAPHICS)
 #include "CoordinatedLayerTreeHostProxyMessages.h"
 #endif
@@ -507,6 +512,11 @@
     m_drawingArea = m_pageClient.createDrawingAreaProxy();
     ASSERT(m_drawingArea);
 
+#if ENABLE(ASYNC_SCROLLING)
+    if (m_drawingArea->type() == DrawingAreaTypeRemoteLayerTree)
+        m_scrollingCoordinatorProxy = std::make_unique<RemoteScrollingCoordinatorProxy>(*this);
+#endif
+
 #if ENABLE(INSPECTOR_SERVER)
     if (pageGroup().preferences()->developerExtrasEnabled())
         inspector()->enableRemoteInspection();
@@ -1235,6 +1245,11 @@
 
 void WebPageProxy::handleWheelEvent(const NativeWebWheelEvent& event)
 {
+#if ENABLE(ASYNC_SCROLLING)
+    if (m_scrollingCoordinatorProxy && m_scrollingCoordinatorProxy->handleWheelEvent(platform(event)))
+        return;
+#endif
+
     if (!isValid())
         return;
 

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (161386 => 161387)


--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h	2014-01-07 00:56:23 UTC (rev 161386)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h	2014-01-07 00:57:23 UTC (rev 161387)
@@ -136,6 +136,7 @@
 class NativeWebMouseEvent;
 class NativeWebWheelEvent;
 class PageClient;
+class RemoteScrollingCoordinatorProxy;
 class StringPairVector;
 class WebBackForwardList;
 class WebBackForwardListItem;
@@ -335,6 +336,8 @@
     WebFrameProxy* frameSetLargestFrame() const { return m_frameSetLargestFrame.get(); }
 
     DrawingAreaProxy* drawingArea() const { return m_drawingArea.get(); }
+    
+    RemoteScrollingCoordinatorProxy* scrollingCoordinatorProxy() const { return m_scrollingCoordinatorProxy.get(); }
 
     WebBackForwardList& backForwardList() { return m_backForwardList.get(); }
 
@@ -1169,6 +1172,8 @@
 #endif
 
     std::unique_ptr<DrawingAreaProxy> m_drawingArea;
+    std::unique_ptr<RemoteScrollingCoordinatorProxy> m_scrollingCoordinatorProxy;
+
     Ref<WebProcessProxy> m_process;
     Ref<WebPageGroup> m_pageGroup;
     RefPtr<WebFrameProxy> m_mainFrame;

Modified: trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h (161386 => 161387)


--- trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h	2014-01-07 00:56:23 UTC (rev 161386)
+++ trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h	2014-01-07 00:57:23 UTC (rev 161387)
@@ -34,6 +34,7 @@
 namespace WebKit {
 
 class RemoteLayerTreeTransaction;
+class RemoteScrollingCoordinatorTransaction;
 
 class RemoteLayerTreeDrawingAreaProxy : public DrawingAreaProxy {
 public:
@@ -51,7 +52,7 @@
     virtual void didReceiveMessage(IPC::Connection*, IPC::MessageDecoder&) OVERRIDE;
 
     // Message handlers
-    void commitLayerTree(const RemoteLayerTreeTransaction&);
+    void commitLayerTree(const RemoteLayerTreeTransaction&, const RemoteScrollingCoordinatorTransaction&);
     
     void sendUpdateGeometry();
 

Modified: trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.messages.in (161386 => 161387)


--- trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.messages.in	2014-01-07 00:56:23 UTC (rev 161386)
+++ trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.messages.in	2014-01-07 00:57:23 UTC (rev 161387)
@@ -21,5 +21,5 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 messages -> RemoteLayerTreeDrawingAreaProxy {
-    void CommitLayerTree(WebKit::RemoteLayerTreeTransaction layerTreeTransaction)
+    void CommitLayerTree(WebKit::RemoteLayerTreeTransaction layerTreeTransaction, WebKit::RemoteScrollingCoordinatorTransaction scrollingTreeTransaction)
 }

Modified: trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm (161386 => 161387)


--- trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm	2014-01-07 00:56:23 UTC (rev 161386)
+++ trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm	2014-01-07 00:57:23 UTC (rev 161387)
@@ -28,6 +28,7 @@
 
 #import "RemoteLayerTreeDrawingAreaProxyMessages.h"
 #import "DrawingAreaMessages.h"
+#import "RemoteScrollingCoordinatorProxy.h"
 #import "WebPageProxy.h"
 #import "WebProcessProxy.h"
 
@@ -82,9 +83,10 @@
     m_isWaitingForDidUpdateGeometry = true;
 }
 
-void RemoteLayerTreeDrawingAreaProxy::commitLayerTree(const RemoteLayerTreeTransaction& layerTreeTransaction)
+void RemoteLayerTreeDrawingAreaProxy::commitLayerTree(const RemoteLayerTreeTransaction& layerTreeTransaction, const RemoteScrollingCoordinatorTransaction& scrollingTreeTransaction)
 {
     m_remoteLayerTreeHost.updateLayerTree(layerTreeTransaction);
+    m_webPageProxy->scrollingCoordinatorProxy()->updateScrollingTree(scrollingTreeTransaction);
 }
 
 } // namespace WebKit

Modified: trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeHost.mm (161386 => 161387)


--- trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeHost.mm	2014-01-07 00:56:23 UTC (rev 161386)
+++ trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeHost.mm	2014-01-07 00:57:23 UTC (rev 161387)
@@ -89,6 +89,9 @@
 
 CALayer *RemoteLayerTreeHost::getLayer(GraphicsLayer::PlatformLayerID layerID) const
 {
+    if (!layerID)
+        return nil;
+
     return m_layers.get(layerID).get();
 }
 

Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (161386 => 161387)


--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj	2014-01-07 00:56:23 UTC (rev 161386)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj	2014-01-07 00:57:23 UTC (rev 161387)
@@ -57,6 +57,8 @@
 		0F59479D187B3B6000437857 /* RemoteScrollingTree.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F594797187B3B6000437857 /* RemoteScrollingTree.h */; };
 		0F5947A3187B3B7D00437857 /* RemoteScrollingCoordinatorTransaction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F5947A1187B3B7D00437857 /* RemoteScrollingCoordinatorTransaction.cpp */; };
 		0F5947A4187B3B7D00437857 /* RemoteScrollingCoordinatorTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F5947A2187B3B7D00437857 /* RemoteScrollingCoordinatorTransaction.h */; };
+		0F5947A7187B517600437857 /* RemoteScrollingCoordinatorMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F5947A5187B517600437857 /* RemoteScrollingCoordinatorMessageReceiver.cpp */; };
+		0F5947A8187B517600437857 /* RemoteScrollingCoordinatorMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F5947A6187B517600437857 /* RemoteScrollingCoordinatorMessages.h */; };
 		0FB659231208B4DB0044816C /* DrawingAreaInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB659221208B4DB0044816C /* DrawingAreaInfo.h */; };
 		0FF24A2D1879E4BC003ABF0C /* RemoteLayerTreeDrawingAreaProxyMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FF24A2B1879E4BC003ABF0C /* RemoteLayerTreeDrawingAreaProxyMessageReceiver.cpp */; };
 		0FF24A2E1879E4BC003ABF0C /* RemoteLayerTreeDrawingAreaProxyMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF24A2C1879E4BC003ABF0C /* RemoteLayerTreeDrawingAreaProxyMessages.h */; };
@@ -1603,6 +1605,8 @@
 		0F594797187B3B6000437857 /* RemoteScrollingTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RemoteScrollingTree.h; path = Scrolling/RemoteScrollingTree.h; sourceTree = "<group>"; };
 		0F5947A1187B3B7D00437857 /* RemoteScrollingCoordinatorTransaction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RemoteScrollingCoordinatorTransaction.cpp; path = Scrolling/RemoteScrollingCoordinatorTransaction.cpp; sourceTree = "<group>"; };
 		0F5947A2187B3B7D00437857 /* RemoteScrollingCoordinatorTransaction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RemoteScrollingCoordinatorTransaction.h; path = Scrolling/RemoteScrollingCoordinatorTransaction.h; sourceTree = "<group>"; };
+		0F5947A5187B517600437857 /* RemoteScrollingCoordinatorMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RemoteScrollingCoordinatorMessageReceiver.cpp; path = RemoteScrollingCoordinatorMessageReceiver.cpp; sourceTree = "<group>"; };
+		0F5947A6187B517600437857 /* RemoteScrollingCoordinatorMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RemoteScrollingCoordinatorMessages.h; path = RemoteScrollingCoordinatorMessages.h; sourceTree = "<group>"; };
 		0FB659221208B4DB0044816C /* DrawingAreaInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DrawingAreaInfo.h; sourceTree = "<group>"; };
 		0FF24A2B1879E4BC003ABF0C /* RemoteLayerTreeDrawingAreaProxyMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RemoteLayerTreeDrawingAreaProxyMessageReceiver.cpp; sourceTree = "<group>"; };
 		0FF24A2C1879E4BC003ABF0C /* RemoteLayerTreeDrawingAreaProxyMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteLayerTreeDrawingAreaProxyMessages.h; sourceTree = "<group>"; };
@@ -5594,6 +5598,8 @@
 				1AC1338418590C4600F3EC05 /* RemoteObjectRegistryMessages.h */,
 				0FF24A2B1879E4BC003ABF0C /* RemoteLayerTreeDrawingAreaProxyMessageReceiver.cpp */,
 				0FF24A2C1879E4BC003ABF0C /* RemoteLayerTreeDrawingAreaProxyMessages.h */,
+				0F5947A5187B517600437857 /* RemoteScrollingCoordinatorMessageReceiver.cpp */,
+				0F5947A6187B517600437857 /* RemoteScrollingCoordinatorMessages.h */,
 				E18E6911169B667B009B6670 /* SecItemShimMessageReceiver.cpp */,
 				E18E6912169B667B009B6670 /* SecItemShimMessages.h */,
 				E18E6913169B667B009B6670 /* SecItemShimProxyMessageReceiver.cpp */,
@@ -6107,6 +6113,7 @@
 				BC032D7B10F4378D0058C15A /* WebDragClient.h in Headers */,
 				BCA0EF9F12332642007D3CFB /* WebEditCommandProxy.h in Headers */,
 				BC032D7D10F4378D0058C15A /* WebEditorClient.h in Headers */,
+				0F5947A8187B517600437857 /* RemoteScrollingCoordinatorMessages.h in Headers */,
 				516A4A5D120A2CCD00C05B7F /* APIError.h in Headers */,
 				1A433F0D113C53DD00FACDE9 /* WebErrors.h in Headers */,
 				BC032DB910F4380F0058C15A /* WebEvent.h in Headers */,
@@ -7597,6 +7604,7 @@
 				51F060E11654318500F3281B /* WebResourceLoaderMessageReceiver.cpp in Sources */,
 				378E1A3D181ED6FF0031007A /* APIObject.mm in Sources */,
 				51FB08FF1639DE1A00EC324A /* WebResourceLoadScheduler.cpp in Sources */,
+				0F5947A7187B517600437857 /* RemoteScrollingCoordinatorMessageReceiver.cpp in Sources */,
 				D3B9484811FF4B6500032B39 /* WebSearchPopupMenu.cpp in Sources */,
 				BCC5715C115ADAEF001CCAF9 /* WebSystemInterface.mm in Sources */,
 				C0337DD8127A51B6008FF4F4 /* WebTouchEvent.cpp in Sources */,

Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp (161386 => 161387)


--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp	2014-01-07 00:56:23 UTC (rev 161386)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp	2014-01-07 00:57:23 UTC (rev 161387)
@@ -32,6 +32,7 @@
 #include "InjectedBundleUserMessageCoders.h"
 #include "LayerTreeHost.h"
 #include "PageBanner.h"
+#include "RemoteScrollingCoordinator.h"
 #include "WebColorChooser.h"
 #include "WebCoreArgumentCoders.h"
 #include "WebFrame.h"
@@ -798,6 +799,15 @@
 }
 #endif
 
+PassRefPtr<ScrollingCoordinator> WebChromeClient::createScrollingCoordinator(Page* page) const
+{
+    ASSERT(m_page->corePage() == page);
+    if (m_page->drawingArea()->type() == DrawingAreaTypeRemoteLayerTree)
+        return RemoteScrollingCoordinator::create(m_page);
+
+    return 0;
+}
+
 #if ENABLE(TOUCH_EVENTS)
 void WebChromeClient::needTouchEvents(bool needTouchEvents)
 {

Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h (161386 => 161387)


--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h	2014-01-07 00:56:23 UTC (rev 161386)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h	2014-01-07 00:57:23 UTC (rev 161387)
@@ -227,6 +227,8 @@
     virtual bool layerTreeStateIsFrozen() const OVERRIDE;
 #endif
 
+    virtual PassRefPtr<WebCore::ScrollingCoordinator> createScrollingCoordinator(WebCore::Page*) const OVERRIDE;
+
 #if ENABLE(TOUCH_EVENTS)
     virtual void needTouchEvents(bool) OVERRIDE;
 #endif

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (161386 => 161387)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2014-01-07 00:56:23 UTC (rev 161386)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2014-01-07 00:57:23 UTC (rev 161387)
@@ -3151,6 +3151,11 @@
     return m_backForwardList.get();
 }
 
+ScrollingCoordinator* WebPage::scrollingCoordinator() const
+{
+    return m_page->scrollingCoordinator();
+}
+
 WebPage::SandboxExtensionTracker::~SandboxExtensionTracker()
 {
     invalidate();

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (161386 => 161387)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h	2014-01-07 00:56:23 UTC (rev 161386)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h	2014-01-07 00:57:23 UTC (rev 161387)
@@ -183,6 +183,7 @@
     
     InjectedBundleBackForwardList* backForwardList();
     DrawingArea* drawingArea() const { return m_drawingArea.get(); }
+    WebCore::ScrollingCoordinator* scrollingCoordinator() const;
 
     WebPageGroupProxy* pageGroup() const { return m_pageGroup.get(); }
 

Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h (161386 => 161387)


--- trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h	2014-01-07 00:56:23 UTC (rev 161386)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h	2014-01-07 00:57:23 UTC (rev 161387)
@@ -64,6 +64,7 @@
     virtual void didUninstallPageOverlay(PageOverlay*) OVERRIDE;
     virtual void setPageOverlayNeedsDisplay(PageOverlay*, const WebCore::IntRect&) OVERRIDE;
     virtual void setPageOverlayOpacity(PageOverlay*, float) OVERRIDE;
+    virtual bool supportsAsyncScrolling() OVERRIDE { return true; }
 
     virtual void setLayerTreeStateIsFrozen(bool) OVERRIDE;
 

Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm (161386 => 161387)


--- trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm	2014-01-07 00:56:23 UTC (rev 161386)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm	2014-01-07 00:57:23 UTC (rev 161387)
@@ -30,6 +30,8 @@
 #import "GraphicsLayerCARemote.h"
 #import "RemoteLayerTreeContext.h"
 #import "RemoteLayerTreeDrawingAreaProxyMessages.h"
+#import "RemoteScrollingCoordinator.h"
+#import "RemoteScrollingCoordinatorTransaction.h"
 #import "WebPage.h"
 #import <WebCore/Frame.h>
 #import <WebCore/FrameView.h>
@@ -319,7 +321,11 @@
     RemoteLayerTreeTransaction layerTransaction;
     m_remoteLayerTreeContext->buildTransaction(layerTransaction, *m_rootLayer);
 
-    m_webPage->send(Messages::RemoteLayerTreeDrawingAreaProxy::CommitLayerTree(layerTransaction));
+    RemoteScrollingCoordinatorTransaction scrollingTransaction;
+    if (m_webPage->scrollingCoordinator())
+        toRemoteScrollingCoordinator(m_webPage->scrollingCoordinator())->buildTransaction(scrollingTransaction);
+    
+    m_webPage->send(Messages::RemoteLayerTreeDrawingAreaProxy::CommitLayerTree(layerTransaction, scrollingTransaction));
 }
 
 } // namespace WebKit
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to