Diff
Modified: trunk/Source/WebCore/ChangeLog (241996 => 241997)
--- trunk/Source/WebCore/ChangeLog 2019-02-23 23:24:27 UTC (rev 241996)
+++ trunk/Source/WebCore/ChangeLog 2019-02-24 00:03:37 UTC (rev 241997)
@@ -1,3 +1,62 @@
+2019-02-23 Simon Fraser <simon.fra...@apple.com>
+
+ Remove remnants of iOS WK1 scrolling tree code
+ https://bugs.webkit.org/show_bug.cgi?id=194980
+
+ Reviewed by Sam Weinig.
+
+ Remove ScrollingTreeIOS and ScrollingCoordinatorIOS which were never instantiated,
+ to reduce maintenance costs and simplify.
+
+ Merge ScrollingTreeFrameScrollingNodeIOS into ScrollingTreeFrameScrollingNodeRemoteIOS
+ since that was the only concrete subclass, removing code which never applies to iOS WK2
+ (e.g. the synchronous scrolling code path).
+
+ * SourcesCocoa.txt:
+ * WebCore.xcodeproj/project.pbxproj:
+ * page/FrameView.h:
+ * page/scrolling/ScrollingCoordinator.cpp:
+ * page/scrolling/ScrollingTree.h:
+ * page/scrolling/ScrollingTreeFrameScrollingNode.h:
+ * page/scrolling/ScrollingTreeNode.h:
+ * page/scrolling/ScrollingTreeScrollingNode.cpp:
+ (WebCore::ScrollingTreeScrollingNode::handleWheelEvent):
+ * page/scrolling/ScrollingTreeScrollingNode.h:
+ (WebCore::ScrollingTreeScrollingNode::updateLayersAfterDelegatedScroll): Deleted.
+ (WebCore::ScrollingTreeScrollingNode::scrollableAreaSize const): Deleted.
+ (WebCore::ScrollingTreeScrollingNode::totalContentsSize const): Deleted.
+ (WebCore::ScrollingTreeScrollingNode::horizontalSnapOffsets const): Deleted.
+ (WebCore::ScrollingTreeScrollingNode::verticalSnapOffsets const): Deleted.
+ (WebCore::ScrollingTreeScrollingNode::horizontalSnapOffsetRanges const): Deleted.
+ (WebCore::ScrollingTreeScrollingNode::verticalSnapOffsetRanges const): Deleted.
+ (WebCore::ScrollingTreeScrollingNode::currentHorizontalSnapPointIndex const): Deleted.
+ (WebCore::ScrollingTreeScrollingNode::currentVerticalSnapPointIndex const): Deleted.
+ (WebCore::ScrollingTreeScrollingNode::setCurrentHorizontalSnapPointIndex): Deleted.
+ (WebCore::ScrollingTreeScrollingNode::setCurrentVerticalSnapPointIndex): Deleted.
+ (WebCore::ScrollingTreeScrollingNode::useDarkAppearanceForScrollbars const): Deleted.
+ (WebCore::ScrollingTreeScrollingNode::lastCommittedScrollPosition const): Deleted.
+ (WebCore::ScrollingTreeScrollingNode::reachableContentsSize const): Deleted.
+ (WebCore::ScrollingTreeScrollingNode::parentRelativeScrollableRect const): Deleted.
+ (WebCore::ScrollingTreeScrollingNode::scrollOrigin const): Deleted.
+ (WebCore::ScrollingTreeScrollingNode::totalContentsSizeForRubberBand const): Deleted.
+ (WebCore::ScrollingTreeScrollingNode::setTotalContentsSizeForRubberBand): Deleted.
+ (WebCore::ScrollingTreeScrollingNode::horizontalScrollElasticity const): Deleted.
+ (WebCore::ScrollingTreeScrollingNode::verticalScrollElasticity const): Deleted.
+ (WebCore::ScrollingTreeScrollingNode::hasEnabledHorizontalScrollbar const): Deleted.
+ (WebCore::ScrollingTreeScrollingNode::hasEnabledVerticalScrollbar const): Deleted.
+ (WebCore::ScrollingTreeScrollingNode::canHaveScrollbars const): Deleted.
+ (WebCore::ScrollingTreeScrollingNode::expectsWheelEventTestTrigger const): Deleted.
+ (WebCore::ScrollingTreeScrollingNode::scrollContainerLayer const): Deleted.
+ (WebCore::ScrollingTreeScrollingNode::scrolledContentsLayer const): Deleted.
+ * page/scrolling/ios/ScrollingCoordinatorIOS.h: Removed.
+ * page/scrolling/ios/ScrollingCoordinatorIOS.mm: Removed.
+ * page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.h: Removed.
+ * page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm: Removed.
+ * page/scrolling/ios/ScrollingTreeIOS.cpp: Removed.
+ * page/scrolling/ios/ScrollingTreeIOS.h: Removed.
+ * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
+ (WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollPosition):
+
2019-02-23 Justin Fan <justin_...@apple.com>
[WebGPU] Buffer updates part 1: async mapping functions, unmap, and destroy
Modified: trunk/Source/WebCore/SourcesCocoa.txt (241996 => 241997)
--- trunk/Source/WebCore/SourcesCocoa.txt 2019-02-23 23:24:27 UTC (rev 241996)
+++ trunk/Source/WebCore/SourcesCocoa.txt 2019-02-24 00:03:37 UTC (rev 241997)
@@ -149,10 +149,6 @@
page/scrolling/cocoa/ScrollingTreeFixedNode.mm
page/scrolling/cocoa/ScrollingTreeStickyNode.mm
-page/scrolling/ios/ScrollingCoordinatorIOS.mm
-page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm
-page/scrolling/ios/ScrollingTreeIOS.cpp
-
page/scrolling/mac/ScrollingCoordinatorMac.mm
page/scrolling/mac/ScrollingMomentumCalculatorMac.mm
page/scrolling/mac/ScrollingStateFrameScrollingNodeMac.mm
Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (241996 => 241997)
--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2019-02-23 23:24:27 UTC (rev 241996)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2019-02-24 00:03:37 UTC (rev 241997)
@@ -365,9 +365,6 @@
0FA24D7A162DF91900A3F4C0 /* GraphicsLayerUpdater.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FA24D78162DF91900A3F4C0 /* GraphicsLayerUpdater.h */; settings = {ATTRIBUTES = (Private, ); }; };
0FB6252F18DE1B1500A07C05 /* GeometryUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB6252D18DE1B1500A07C05 /* GeometryUtilities.h */; settings = {ATTRIBUTES = (Private, ); }; };
0FB8890F167D30160010CDA5 /* ScrollingStateStickyNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB8890D167D30160010CDA5 /* ScrollingStateStickyNode.h */; settings = {ATTRIBUTES = (Private, ); }; };
- 0FC4E40D187F82E10045882C /* ScrollingCoordinatorIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FC4E407187F82E10045882C /* ScrollingCoordinatorIOS.h */; };
- 0FC4E410187F82E10045882C /* ScrollingTreeIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FC4E40A187F82E10045882C /* ScrollingTreeIOS.h */; };
- 0FC4E411187F82E10045882C /* ScrollingTreeFrameScrollingNodeIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FC4E40B187F82E10045882C /* ScrollingTreeFrameScrollingNodeIOS.h */; settings = {ATTRIBUTES = (Private, ); }; };
0FCF332F0F2B9A25004B6795 /* WebLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCF332B0F2B9A25004B6795 /* WebLayer.h */; settings = {ATTRIBUTES = (Private, ); }; };
0FD3080F117CF7E700A791F7 /* RenderFrameBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD3080D117CF7E700A791F7 /* RenderFrameBase.h */; };
0FD308D6117D168500A791F7 /* RenderIFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD308D4117D168400A791F7 /* RenderIFrame.h */; };
@@ -5813,12 +5810,6 @@
0FB8890D167D30160010CDA5 /* ScrollingStateStickyNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollingStateStickyNode.h; sourceTree = "<group>"; };
0FC05168219B5EBE0031C39E /* ScrollingTreeOverflowScrollingNodeMac.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ScrollingTreeOverflowScrollingNodeMac.mm; sourceTree = "<group>"; };
0FC0516A219B5EBE0031C39E /* ScrollingTreeOverflowScrollingNodeMac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ScrollingTreeOverflowScrollingNodeMac.h; sourceTree = "<group>"; };
- 0FC4E407187F82E10045882C /* ScrollingCoordinatorIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollingCoordinatorIOS.h; sourceTree = "<group>"; };
- 0FC4E408187F82E10045882C /* ScrollingCoordinatorIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ScrollingCoordinatorIOS.mm; sourceTree = "<group>"; };
- 0FC4E409187F82E10045882C /* ScrollingTreeIOS.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollingTreeIOS.cpp; sourceTree = "<group>"; };
- 0FC4E40A187F82E10045882C /* ScrollingTreeIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollingTreeIOS.h; sourceTree = "<group>"; };
- 0FC4E40B187F82E10045882C /* ScrollingTreeFrameScrollingNodeIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollingTreeFrameScrollingNodeIOS.h; sourceTree = "<group>"; };
- 0FC4E40C187F82E10045882C /* ScrollingTreeFrameScrollingNodeIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ScrollingTreeFrameScrollingNodeIOS.mm; sourceTree = "<group>"; };
0FCF33230F2B9715004B6795 /* ColorCG.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ColorCG.cpp; sourceTree = "<group>"; };
0FCF332A0F2B9A25004B6795 /* WebLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebLayer.mm; sourceTree = "<group>"; };
0FCF332B0F2B9A25004B6795 /* WebLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebLayer.h; sourceTree = "<group>"; };
@@ -16381,19 +16372,6 @@
tabWidth = 4;
usesTabs = 0;
};
- 0FC4E406187F82D30045882C /* ios */ = {
- isa = PBXGroup;
- children = (
- 0FC4E407187F82E10045882C /* ScrollingCoordinatorIOS.h */,
- 0FC4E408187F82E10045882C /* ScrollingCoordinatorIOS.mm */,
- 0FC4E40B187F82E10045882C /* ScrollingTreeFrameScrollingNodeIOS.h */,
- 0FC4E40C187F82E10045882C /* ScrollingTreeFrameScrollingNodeIOS.mm */,
- 0FC4E409187F82E10045882C /* ScrollingTreeIOS.cpp */,
- 0FC4E40A187F82E10045882C /* ScrollingTreeIOS.h */,
- );
- path = ios;
- sourceTree = "<group>";
- };
0FE5FBC91C3DD5060007A2CA /* displaylists */ = {
isa = PBXGroup;
children = (
@@ -16944,7 +16922,6 @@
isa = PBXGroup;
children = (
93EF7D531954E98F00DFB71D /* cocoa */,
- 0FC4E406187F82D30045882C /* ios */,
1AF62EE214DA22A70041556C /* mac */,
0FFD4D5E18651FA300512F6E /* AsyncScrollingCoordinator.cpp */,
0FFD4D5F18651FA300512F6E /* AsyncScrollingCoordinator.h */,
@@ -31502,7 +31479,6 @@
1AA84F05143BA7BD0051D153 /* ScrollController.h in Headers */,
0F605AED15F94848004DF0C0 /* ScrollingConstraints.h in Headers */,
1AF62EE814DA22A70041556C /* ScrollingCoordinator.h in Headers */,
- 0FC4E40D187F82E10045882C /* ScrollingCoordinatorIOS.h in Headers */,
9391A991162746CB00297330 /* ScrollingCoordinatorMac.h in Headers */,
712DBA4921F8AD83008F36B2 /* ScrollingCoordinatorTypes.h in Headers */,
51C61B0B1DE536E7008A212D /* ScrollingMomentumCalculator.h in Headers */,
@@ -31520,9 +31496,7 @@
0F94B6472208FE3600157014 /* ScrollingTreeFixedNode.h in Headers */,
0FD41E6821F80C0E000C006D /* ScrollingTreeFrameHostingNode.h in Headers */,
0FEA3E88191B3BD7000F1B55 /* ScrollingTreeFrameScrollingNode.h in Headers */,
- 0FC4E411187F82E10045882C /* ScrollingTreeFrameScrollingNodeIOS.h in Headers */,
93C4A4151629DF5A00C3EB6E /* ScrollingTreeFrameScrollingNodeMac.h in Headers */,
- 0FC4E410187F82E10045882C /* ScrollingTreeIOS.h in Headers */,
0FE5806419327A6200DE32EB /* ScrollingTreeMac.h in Headers */,
1AAADDE414DC8C8F00AF64B3 /* ScrollingTreeNode.h in Headers */,
0FEA3E80191B3169000F1B55 /* ScrollingTreeOverflowScrollingNode.h in Headers */,
Modified: trunk/Source/WebCore/page/FrameView.h (241996 => 241997)
--- trunk/Source/WebCore/page/FrameView.h 2019-02-23 23:24:27 UTC (rev 241996)
+++ trunk/Source/WebCore/page/FrameView.h 2019-02-24 00:03:37 UTC (rev 241997)
@@ -305,7 +305,7 @@
LayoutPoint scrollPositionForFixedPosition() const;
// Static function can be called from another thread.
- static LayoutPoint scrollPositionForFixedPosition(const LayoutRect& visibleContentRect, const LayoutSize& totalContentsSize, const LayoutPoint& scrollPosition, const LayoutPoint& scrollOrigin, float frameScaleFactor, bool fixedElementsLayoutRelativeToFrame, ScrollBehaviorForFixedElements, int headerHeight, int footerHeight);
+ WEBCORE_EXPORT static LayoutPoint scrollPositionForFixedPosition(const LayoutRect& visibleContentRect, const LayoutSize& totalContentsSize, const LayoutPoint& scrollPosition, const LayoutPoint& scrollOrigin, float frameScaleFactor, bool fixedElementsLayoutRelativeToFrame, ScrollBehaviorForFixedElements, int headerHeight, int footerHeight);
WEBCORE_EXPORT static LayoutSize expandedLayoutViewportSize(const LayoutSize& baseLayoutViewportSize, const LayoutSize& documentSize, double heightExpansionFactor);
Modified: trunk/Source/WebCore/page/scrolling/ScrollingCoordinator.cpp (241996 => 241997)
--- trunk/Source/WebCore/page/scrolling/ScrollingCoordinator.cpp 2019-02-23 23:24:27 UTC (rev 241996)
+++ trunk/Source/WebCore/page/scrolling/ScrollingCoordinator.cpp 2019-02-24 00:03:37 UTC (rev 241997)
@@ -47,7 +47,7 @@
namespace WebCore {
-#if !PLATFORM(COCOA) && !USE(COORDINATED_GRAPHICS)
+#if !PLATFORM(MAC) && !USE(COORDINATED_GRAPHICS)
Ref<ScrollingCoordinator> ScrollingCoordinator::create(Page* page)
{
return adoptRef(*new ScrollingCoordinator(page));
Modified: trunk/Source/WebCore/page/scrolling/ScrollingTree.h (241996 => 241997)
--- trunk/Source/WebCore/page/scrolling/ScrollingTree.h 2019-02-23 23:24:27 UTC (rev 241996)
+++ trunk/Source/WebCore/page/scrolling/ScrollingTree.h 2019-02-24 00:03:37 UTC (rev 241997)
@@ -126,7 +126,7 @@
bool isHandlingProgrammaticScroll();
void setScrollPinningBehavior(ScrollPinningBehavior);
- ScrollPinningBehavior scrollPinningBehavior();
+ WEBCORE_EXPORT ScrollPinningBehavior scrollPinningBehavior();
WEBCORE_EXPORT bool willWheelEventStartSwipeGesture(const PlatformWheelEvent&);
Modified: trunk/Source/WebCore/page/scrolling/ScrollingTreeFrameScrollingNode.h (241996 => 241997)
--- trunk/Source/WebCore/page/scrolling/ScrollingTreeFrameScrollingNode.h 2019-02-23 23:24:27 UTC (rev 241996)
+++ trunk/Source/WebCore/page/scrolling/ScrollingTreeFrameScrollingNode.h 2019-02-24 00:03:37 UTC (rev 241997)
@@ -35,7 +35,7 @@
class ScrollingTree;
class ScrollingStateScrollingNode;
-class ScrollingTreeFrameScrollingNode : public ScrollingTreeScrollingNode {
+class WEBCORE_EXPORT ScrollingTreeFrameScrollingNode : public ScrollingTreeScrollingNode {
public:
virtual ~ScrollingTreeFrameScrollingNode();
@@ -44,8 +44,6 @@
// FIXME: We should implement this when we support ScrollingTreeScrollingNodes as children.
void updateLayersAfterAncestorChange(const ScrollingTreeNode& /*changedNode*/, const FloatRect& /*fixedPositionRect*/, const FloatSize& /*cumulativeDelta*/) override { }
- ScrollingEventResult handleWheelEvent(const PlatformWheelEvent&) override = 0;
-
void updateLayersAfterViewportChange(const FloatRect& fixedPositionRect, double scale) override = 0;
void updateLayersAfterDelegatedScroll(const FloatPoint&) override { }
@@ -76,10 +74,10 @@
ScrollBehaviorForFixedElements scrollBehaviorForFixedElements() const { return m_behaviorForFixed; }
private:
- WEBCORE_EXPORT LayoutPoint parentToLocalPoint(LayoutPoint) const final;
- WEBCORE_EXPORT LayoutPoint localToContentsPoint(LayoutPoint) const final;
+ LayoutPoint parentToLocalPoint(LayoutPoint) const final;
+ LayoutPoint localToContentsPoint(LayoutPoint) const final;
- WEBCORE_EXPORT void dumpProperties(WTF::TextStream&, ScrollingStateTreeAsTextBehavior) const override;
+ void dumpProperties(WTF::TextStream&, ScrollingStateTreeAsTextBehavior) const override;
FloatRect m_layoutViewport;
FloatPoint m_minLayoutViewportOrigin;
Modified: trunk/Source/WebCore/page/scrolling/ScrollingTreeNode.h (241996 => 241997)
--- trunk/Source/WebCore/page/scrolling/ScrollingTreeNode.h 2019-02-23 23:24:27 UTC (rev 241996)
+++ trunk/Source/WebCore/page/scrolling/ScrollingTreeNode.h 2019-02-24 00:03:37 UTC (rev 241997)
@@ -63,7 +63,7 @@
ScrollingTreeNode* parent() const { return m_parent; }
void setParent(ScrollingTreeNode* parent) { m_parent = parent; }
- bool isRootNode() const;
+ WEBCORE_EXPORT bool isRootNode() const;
Vector<RefPtr<ScrollingTreeNode>>* children() { return m_children.get(); }
const Vector<RefPtr<ScrollingTreeNode>>* children() const { return m_children.get(); }
Modified: trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp (241996 => 241997)
--- trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp 2019-02-23 23:24:27 UTC (rev 241996)
+++ trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp 2019-02-24 00:03:37 UTC (rev 241997)
@@ -122,6 +122,11 @@
child->updateLayersAfterAncestorChange(changedNode, fixedPositionRect, cumulativeDelta);
}
+ScrollingEventResult ScrollingTreeScrollingNode::handleWheelEvent(const PlatformWheelEvent&)
+{
+ return ScrollingEventResult::DidNotHandleEvent;
+}
+
void ScrollingTreeScrollingNode::setScrollPosition(const FloatPoint& scrollPosition, ScrollPositionClamp clamp)
{
FloatPoint newScrollPosition = scrollPosition;
Modified: trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h (241996 => 241997)
--- trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h 2019-02-23 23:24:27 UTC (rev 241996)
+++ trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h 2019-02-24 00:03:37 UTC (rev 241997)
@@ -38,7 +38,7 @@
class ScrollingTree;
class ScrollingStateScrollingNode;
-class ScrollingTreeScrollingNode : public ScrollingTreeNode {
+class WEBCORE_EXPORT ScrollingTreeScrollingNode : public ScrollingTreeNode {
friend class ScrollingTreeScrollingNodeDelegate;
#if PLATFORM(MAC)
friend class ScrollingTreeScrollingNodeDelegateMac;
@@ -47,13 +47,13 @@
public:
virtual ~ScrollingTreeScrollingNode();
- WEBCORE_EXPORT void commitStateBeforeChildren(const ScrollingStateNode&) override;
- WEBCORE_EXPORT void commitStateAfterChildren(const ScrollingStateNode&) override;
+ void commitStateBeforeChildren(const ScrollingStateNode&) override;
+ void commitStateAfterChildren(const ScrollingStateNode&) override;
- WEBCORE_EXPORT void updateLayersAfterAncestorChange(const ScrollingTreeNode& changedNode, const FloatRect& fixedPositionRect, const FloatSize& cumulativeDelta) override;
+ void updateLayersAfterAncestorChange(const ScrollingTreeNode& changedNode, const FloatRect& fixedPositionRect, const FloatSize& cumulativeDelta) override;
- virtual ScrollingEventResult handleWheelEvent(const PlatformWheelEvent&) = 0;
- WEBCORE_EXPORT virtual void setScrollPosition(const FloatPoint&, ScrollPositionClamp = ScrollPositionClamp::ToContentEdges);
+ virtual ScrollingEventResult handleWheelEvent(const PlatformWheelEvent&);
+ virtual void setScrollPosition(const FloatPoint&, ScrollPositionClamp = ScrollPositionClamp::ToContentEdges);
void scrollBy(const FloatSize&, ScrollPositionClamp = ScrollPositionClamp::ToContentEdges);
@@ -78,13 +78,13 @@
bool useDarkAppearanceForScrollbars() const { return m_scrollableAreaParameters.useDarkAppearanceForScrollbars; }
bool scrollLimitReached(const PlatformWheelEvent&) const;
- WEBCORE_EXPORT ScrollingTreeScrollingNode* scrollingNodeForPoint(LayoutPoint) const override;
+ ScrollingTreeScrollingNode* scrollingNodeForPoint(LayoutPoint) const override;
protected:
ScrollingTreeScrollingNode(ScrollingTree&, ScrollingNodeType, ScrollingNodeID);
- WEBCORE_EXPORT virtual FloatPoint minimumScrollPosition() const;
- WEBCORE_EXPORT virtual FloatPoint maximumScrollPosition() const;
+ virtual FloatPoint minimumScrollPosition() const;
+ virtual FloatPoint maximumScrollPosition() const;
FloatPoint clampScrollPosition(const FloatPoint&) const;
@@ -116,10 +116,10 @@
CALayer *scrolledContentsLayer() const { return m_scrolledContentsLayer.get(); }
#endif
- WEBCORE_EXPORT LayoutPoint parentToLocalPoint(LayoutPoint) const override;
- WEBCORE_EXPORT LayoutPoint localToContentsPoint(LayoutPoint) const override;
+ LayoutPoint parentToLocalPoint(LayoutPoint) const override;
+ LayoutPoint localToContentsPoint(LayoutPoint) const override;
- WEBCORE_EXPORT void dumpProperties(WTF::TextStream&, ScrollingStateTreeAsTextBehavior) const override;
+ void dumpProperties(WTF::TextStream&, ScrollingStateTreeAsTextBehavior) const override;
private:
FloatSize m_scrollableAreaSize;
Deleted: trunk/Source/WebCore/page/scrolling/ios/ScrollingCoordinatorIOS.h (241996 => 241997)
--- trunk/Source/WebCore/page/scrolling/ios/ScrollingCoordinatorIOS.h 2019-02-23 23:24:27 UTC (rev 241996)
+++ trunk/Source/WebCore/page/scrolling/ios/ScrollingCoordinatorIOS.h 2019-02-24 00:03:37 UTC (rev 241997)
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#pragma once
-
-#if ENABLE(ASYNC_SCROLLING) && PLATFORM(IOS_FAMILY)
-
-#include "AsyncScrollingCoordinator.h"
-
-namespace WebCore {
-
-class Scrollbar;
-class ScrollingStateNode;
-class ScrollingStateScrollingNode;
-class ScrollingStateTree;
-class ThreadedScrollingTree;
-
-class ScrollingCoordinatorIOS : public AsyncScrollingCoordinator {
-public:
- explicit ScrollingCoordinatorIOS(Page*);
- virtual ~ScrollingCoordinatorIOS();
-
- void pageDestroyed() override;
-
- void commitTreeStateIfNeeded() override;
-
- // Handle the wheel event on the scrolling thread. Returns whether the event was handled or not.
- ScrollingEventResult handleWheelEvent(FrameView&, const PlatformWheelEvent&) override { return ScrollingEventResult::DidNotHandleEvent; }
-
-private:
- void scheduleTreeStateCommit() override;
-
- void commitTreeState();
-
- Timer m_scrollingStateTreeCommitterTimer;
-};
-
-} // namespace WebCore
-
-#endif // ENABLE(ASYNC_SCROLLING) && PLATFORM(IOS_FAMILY)
Deleted: trunk/Source/WebCore/page/scrolling/ios/ScrollingCoordinatorIOS.mm (241996 => 241997)
--- trunk/Source/WebCore/page/scrolling/ios/ScrollingCoordinatorIOS.mm 2019-02-23 23:24:27 UTC (rev 241996)
+++ trunk/Source/WebCore/page/scrolling/ios/ScrollingCoordinatorIOS.mm 2019-02-24 00:03:37 UTC (rev 241997)
@@ -1,103 +0,0 @@
-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-
-#if ENABLE(ASYNC_SCROLLING) && PLATFORM(IOS_FAMILY)
-
-#import "ScrollingCoordinatorIOS.h"
-
-#include "Frame.h"
-#include "FrameView.h"
-#include "Page.h"
-#include "Region.h"
-#include "ScrollingStateTree.h"
-#include "ScrollingThread.h"
-#include "ScrollingTreeFixedNode.h"
-#include "ScrollingTreeFrameScrollingNodeIOS.h"
-#include "ScrollingTreeStickyNode.h"
-#include "ScrollingTreeIOS.h"
-#include <wtf/MainThread.h>
-
-namespace WebCore {
-
-Ref<ScrollingCoordinator> ScrollingCoordinator::create(Page* page)
-{
- return adoptRef(*new ScrollingCoordinatorIOS(page));
-}
-
-ScrollingCoordinatorIOS::ScrollingCoordinatorIOS(Page* page)
- : AsyncScrollingCoordinator(page)
- , m_scrollingStateTreeCommitterTimer(*this, &ScrollingCoordinatorIOS::commitTreeState)
-{
- setScrollingTree(ScrollingTreeIOS::create(*this));
-}
-
-ScrollingCoordinatorIOS::~ScrollingCoordinatorIOS()
-{
- ASSERT(!scrollingTree());
-}
-
-void ScrollingCoordinatorIOS::pageDestroyed()
-{
- AsyncScrollingCoordinator::pageDestroyed();
-
- m_scrollingStateTreeCommitterTimer.stop();
-
- // Invalidating the scrolling tree will break the reference cycle between the ScrollingCoordinator and ScrollingTree objects.
- releaseScrollingTree();
-}
-
-void ScrollingCoordinatorIOS::commitTreeStateIfNeeded()
-{
- if (!scrollingStateTree()->hasChangedProperties())
- return;
-
- commitTreeState();
- m_scrollingStateTreeCommitterTimer.stop();
-}
-
-void ScrollingCoordinatorIOS::scheduleTreeStateCommit()
-{
- ASSERT(scrollingStateTree()->hasChangedProperties());
-
- if (m_scrollingStateTreeCommitterTimer.isActive())
- return;
-
- m_scrollingStateTreeCommitterTimer.startOneShot(0_s);
-}
-
-void ScrollingCoordinatorIOS::commitTreeState()
-{
- ASSERT(scrollingStateTree()->hasChangedProperties());
-
- scrollingStateTree()->commit(LayerRepresentation::PlatformLayerRepresentation);
- // FIXME: figure out how to commit.
-}
-
-
-} // namespace WebCore
-
-#endif // ENABLE(ASYNC_SCROLLING) && PLATFORM(IOS_FAMILY)
Deleted: trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.h (241996 => 241997)
--- trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.h 2019-02-23 23:24:27 UTC (rev 241996)
+++ trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.h 2019-02-24 00:03:37 UTC (rev 241997)
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#pragma once
-
-#if ENABLE(ASYNC_SCROLLING) && PLATFORM(IOS_FAMILY)
-
-#include "ScrollingTreeFrameScrollingNode.h"
-#include <wtf/RetainPtr.h>
-
-OBJC_CLASS CALayer;
-
-namespace WebCore {
-
-class WEBCORE_EXPORT ScrollingTreeFrameScrollingNodeIOS : public ScrollingTreeFrameScrollingNode {
-public:
- static Ref<ScrollingTreeFrameScrollingNodeIOS> create(ScrollingTree&, ScrollingNodeType, ScrollingNodeID);
- virtual ~ScrollingTreeFrameScrollingNodeIOS();
-
-protected:
- ScrollingTreeFrameScrollingNodeIOS(ScrollingTree&, ScrollingNodeType, ScrollingNodeID);
-
- // ScrollingTreeNode member functions.
- void commitStateBeforeChildren(const ScrollingStateNode&) override;
- void commitStateAfterChildren(const ScrollingStateNode&) override;
-
- ScrollingEventResult handleWheelEvent(const PlatformWheelEvent&) override;
-
- FloatPoint scrollPosition() const override;
-
- void updateLayersAfterViewportChange(const FloatRect& fixedPositionRect, double scale) override;
- void updateLayersAfterDelegatedScroll(const FloatPoint&) override;
- void updateLayersAfterAncestorChange(const ScrollingTreeNode& changedNode, const FloatRect& fixedPositionRect, const FloatSize& cumulativeDelta) override;
-
- void setScrollPosition(const FloatPoint&, ScrollPositionClamp = ScrollPositionClamp::ToContentEdges) override;
- void setScrollLayerPosition(const FloatPoint&, const FloatRect& layoutViewport) override;
-
- FloatPoint minimumScrollPosition() const override;
- FloatPoint maximumScrollPosition() const override;
-
-private:
- void updateChildNodesAfterScroll(const FloatPoint&);
-
- RetainPtr<CALayer> m_counterScrollingLayer;
- RetainPtr<CALayer> m_headerLayer;
- RetainPtr<CALayer> m_footerLayer;
- FloatPoint m_probableMainThreadScrollPosition;
-};
-
-} // namespace WebCore
-
-#endif // ENABLE(ASYNC_SCROLLING) && PLATFORM(IOS_FAMILY)
Deleted: trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm (241996 => 241997)
--- trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm 2019-02-23 23:24:27 UTC (rev 241996)
+++ trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm 2019-02-24 00:03:37 UTC (rev 241997)
@@ -1,221 +0,0 @@
-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "config.h"
-#import "ScrollingTreeFrameScrollingNodeIOS.h"
-
-#if ENABLE(ASYNC_SCROLLING) && PLATFORM(IOS_FAMILY)
-
-#import "FrameView.h"
-#import "ScrollingCoordinator.h"
-#import "ScrollingStateFrameScrollingNode.h"
-#import "ScrollingStateTree.h"
-#import "ScrollingTree.h"
-#import "TileController.h"
-#import "WebLayer.h"
-#import <QuartzCore/QuartzCore.h>
-
-namespace WebCore {
-
-Ref<ScrollingTreeFrameScrollingNodeIOS> ScrollingTreeFrameScrollingNodeIOS::create(ScrollingTree& scrollingTree, ScrollingNodeType nodeType, ScrollingNodeID nodeID)
-{
- return adoptRef(*new ScrollingTreeFrameScrollingNodeIOS(scrollingTree, nodeType, nodeID));
-}
-
-ScrollingTreeFrameScrollingNodeIOS::ScrollingTreeFrameScrollingNodeIOS(ScrollingTree& scrollingTree, ScrollingNodeType nodeType, ScrollingNodeID nodeID)
- : ScrollingTreeFrameScrollingNode(scrollingTree, nodeType, nodeID)
-{
-}
-
-ScrollingTreeFrameScrollingNodeIOS::~ScrollingTreeFrameScrollingNodeIOS()
-{
-}
-
-void ScrollingTreeFrameScrollingNodeIOS::commitStateBeforeChildren(const ScrollingStateNode& stateNode)
-{
- ScrollingTreeFrameScrollingNode::commitStateBeforeChildren(stateNode);
-
- const auto& scrollingStateNode = downcast<ScrollingStateFrameScrollingNode>(stateNode);
-
- if (scrollingStateNode.hasChangedProperty(ScrollingStateFrameScrollingNode::CounterScrollingLayer))
- m_counterScrollingLayer = scrollingStateNode.counterScrollingLayer();
-
- if (scrollingStateNode.hasChangedProperty(ScrollingStateFrameScrollingNode::HeaderLayer))
- m_headerLayer = scrollingStateNode.headerLayer();
-
- if (scrollingStateNode.hasChangedProperty(ScrollingStateFrameScrollingNode::FooterLayer))
- m_footerLayer = scrollingStateNode.footerLayer();
-
- if (scrollingStateNode.hasChangedProperty(ScrollingStateFrameScrollingNode::ReasonsForSynchronousScrolling)) {
- if (shouldUpdateScrollLayerPositionSynchronously()) {
- // We're transitioning to the slow "update scroll layer position on the main thread" mode.
- // Initialize the probable main thread scroll position with the current scroll layer position.
- if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::RequestedScrollPosition))
- m_probableMainThreadScrollPosition = scrollingStateNode.requestedScrollPosition();
- else {
- CGPoint scrollLayerPosition = scrolledContentsLayer().position;
- m_probableMainThreadScrollPosition = IntPoint(-scrollLayerPosition.x, -scrollLayerPosition.y);
- }
- }
- }
-}
-
-void ScrollingTreeFrameScrollingNodeIOS::commitStateAfterChildren(const ScrollingStateNode& stateNode)
-{
- ScrollingTreeFrameScrollingNode::commitStateAfterChildren(stateNode);
-
- const auto& scrollingStateNode = downcast<ScrollingStateFrameScrollingNode>(stateNode);
-
- // Update the scroll position after child nodes have been updated, because they need to have updated their constraints before any scrolling happens.
- if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::RequestedScrollPosition))
- setScrollPosition(scrollingStateNode.requestedScrollPosition());
-}
-
-ScrollingEventResult ScrollingTreeFrameScrollingNodeIOS::handleWheelEvent(const PlatformWheelEvent&)
-{
- return ScrollingEventResult::DidNotHandleEvent;
-}
-
-FloatPoint ScrollingTreeFrameScrollingNodeIOS::scrollPosition() const
-{
- if (shouldUpdateScrollLayerPositionSynchronously())
- return m_probableMainThreadScrollPosition;
-
- return -scrolledContentsLayer().position;
-}
-
-void ScrollingTreeFrameScrollingNodeIOS::setScrollPosition(const FloatPoint& position, ScrollPositionClamp clamp)
-{
- auto scrollPosition = position;
- if (clamp == ScrollPositionClamp::ToContentEdges)
- scrollPosition = clampScrollPosition(scrollPosition);
-
- if (shouldUpdateScrollLayerPositionSynchronously()) {
- m_probableMainThreadScrollPosition = scrollPosition;
- scrollingTree().scrollingTreeNodeDidScroll(scrollingNodeID(), scrollPosition, WTF::nullopt, ScrollingLayerPositionAction::Set);
- return;
- }
-
- FloatRect layoutViewport; // FIXME: implement for iOS WK1.
- setScrollLayerPosition(scrollPosition, layoutViewport);
- scrollingTree().scrollingTreeNodeDidScroll(scrollingNodeID(), scrollPosition, WTF::nullopt);
-}
-
-void ScrollingTreeFrameScrollingNodeIOS::setScrollLayerPosition(const FloatPoint& scrollPosition, const FloatRect&)
-{
- ASSERT(!shouldUpdateScrollLayerPositionSynchronously());
- [scrolledContentsLayer() setPosition:-scrollPosition];
-
- updateChildNodesAfterScroll(scrollPosition);
-}
-
-void ScrollingTreeFrameScrollingNodeIOS::updateLayersAfterViewportChange(const FloatRect& fixedPositionRect, double /*scale*/)
-{
- // Note: we never currently have a m_counterScrollingLayer (which is used for background-attachment:fixed) on iOS.
- [m_counterScrollingLayer setPosition:fixedPositionRect.location()];
-
- if (!m_children)
- return;
-
- for (auto& child : *m_children)
- child->updateLayersAfterAncestorChange(*this, fixedPositionRect, FloatSize());
-}
-
-void ScrollingTreeFrameScrollingNodeIOS::updateLayersAfterAncestorChange(const ScrollingTreeNode& changedNode, const FloatRect&, const FloatSize&)
-{
- if (!m_children)
- return;
-
- FloatRect fixedPositionRect(scrollPosition(), scrollableAreaSize());
- for (auto& child : *m_children)
- child->updateLayersAfterAncestorChange(changedNode, fixedPositionRect, FloatSize());
-}
-
-void ScrollingTreeFrameScrollingNodeIOS::updateLayersAfterDelegatedScroll(const FloatPoint& scrollPosition)
-{
- updateChildNodesAfterScroll(scrollPosition);
-}
-
-void ScrollingTreeFrameScrollingNodeIOS::updateChildNodesAfterScroll(const FloatPoint& scrollPosition)
-{
- ScrollBehaviorForFixedElements behaviorForFixed = scrollBehaviorForFixedElements();
- FloatRect viewportRect(scrollPosition, scrollableAreaSize());
- FloatPoint scrollPositionForFixedChildren = FrameView::scrollPositionForFixedPosition(enclosingLayoutRect(viewportRect), LayoutSize(totalContentsSize()), LayoutPoint(scrollPosition), scrollOrigin(), frameScaleFactor(), fixedElementsLayoutRelativeToFrame(), behaviorForFixed, headerHeight(), footerHeight());
-
- [m_counterScrollingLayer setPosition:scrollPositionForFixedChildren];
-
- if (m_headerLayer || m_footerLayer) {
- // Generally the banners should have the same horizontal-position computation as a fixed element. However,
- // the banners are not affected by the frameScaleFactor(), so if there is currently a non-1 frameScaleFactor()
- // then we should recompute scrollPositionForFixedChildren for the banner with a scale factor of 1.
- float horizontalScrollOffsetForBanner = scrollPositionForFixedChildren.x();
- if (frameScaleFactor() != 1)
- horizontalScrollOffsetForBanner = FrameView::scrollPositionForFixedPosition(enclosingLayoutRect(viewportRect), LayoutSize(totalContentsSize()), LayoutPoint(scrollPosition), scrollOrigin(), 1, fixedElementsLayoutRelativeToFrame(), behaviorForFixed, headerHeight(), footerHeight()).x();
-
- if (m_headerLayer)
- [m_headerLayer setPosition:FloatPoint(horizontalScrollOffsetForBanner, 0)];
-
- if (m_footerLayer)
- [m_footerLayer setPosition:FloatPoint(horizontalScrollOffsetForBanner, totalContentsSize().height() - footerHeight())];
- }
-
- if (!m_children)
- return;
-
-
- FloatRect fixedPositionRect;
- if (!parent())
- fixedPositionRect = scrollingTree().fixedPositionRect();
- else
- fixedPositionRect = FloatRect(scrollPosition, scrollableAreaSize());
-
- for (auto& child : *m_children)
- child->updateLayersAfterAncestorChange(*this, fixedPositionRect, FloatSize());
-}
-
-FloatPoint ScrollingTreeFrameScrollingNodeIOS::minimumScrollPosition() const
-{
- FloatPoint position = ScrollableArea::scrollPositionFromOffset(FloatPoint(), toFloatSize(scrollOrigin()));
-
- if (scrollingTree().rootNode() == this && scrollingTree().scrollPinningBehavior() == PinToBottom)
- position.setY(maximumScrollPosition().y());
-
- return position;
-}
-
-FloatPoint ScrollingTreeFrameScrollingNodeIOS::maximumScrollPosition() const
-{
- FloatPoint position = ScrollableArea::scrollPositionFromOffset(FloatPoint(totalContentsSizeForRubberBand() - scrollableAreaSize()), toFloatSize(scrollOrigin()));
- position = position.expandedTo(FloatPoint());
-
- if (scrollingTree().rootNode() == this && scrollingTree().scrollPinningBehavior() == PinToTop)
- position.setY(minimumScrollPosition().y());
-
- return position;
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(ASYNC_SCROLLING) && PLATFORM(IOS_FAMILY)
Deleted: trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeIOS.cpp (241996 => 241997)
--- trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeIOS.cpp 2019-02-23 23:24:27 UTC (rev 241996)
+++ trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeIOS.cpp 2019-02-24 00:03:37 UTC (rev 241997)
@@ -1,127 +0,0 @@
-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "ScrollingTreeIOS.h"
-
-#if ENABLE(ASYNC_SCROLLING) && PLATFORM(IOS_FAMILY)
-
-#include "AsyncScrollingCoordinator.h"
-#include "PlatformWheelEvent.h"
-#include "ScrollingThread.h"
-#include "ScrollingTreeFixedNode.h"
-#include "ScrollingTreeFrameHostingNode.h"
-#include "ScrollingTreeFrameScrollingNodeIOS.h"
-#include "ScrollingTreeNode.h"
-#include "ScrollingTreeScrollingNode.h"
-#include "ScrollingTreeStickyNode.h"
-#include <wtf/MainThread.h>
-
-namespace WebCore {
-
-Ref<ScrollingTreeIOS> ScrollingTreeIOS::create(AsyncScrollingCoordinator& scrollingCoordinator)
-{
- return adoptRef(*new ScrollingTreeIOS(scrollingCoordinator));
-}
-
-ScrollingTreeIOS::ScrollingTreeIOS(AsyncScrollingCoordinator& scrollingCoordinator)
- : m_scrollingCoordinator(&scrollingCoordinator)
-{
-}
-
-ScrollingTreeIOS::~ScrollingTreeIOS()
-{
- // invalidate() should have cleared m_scrollingCoordinator.
- ASSERT(!m_scrollingCoordinator);
-}
-
-void ScrollingTreeIOS::invalidate()
-{
- // Invalidate is dispatched by the ScrollingCoordinator class on the ScrollingThread
- // to break the reference cycle between ScrollingTree and ScrollingCoordinator when the
- // ScrollingCoordinator's page is destroyed.
- ASSERT(ScrollingThread::isCurrentThread());
-
- // Since this can potentially be the last reference to the scrolling coordinator,
- // we need to release it on the main thread since it has member variables (such as timers)
- // that expect to be destroyed from the main thread.
- callOnMainThread([scrollingCoordinator = WTFMove(m_scrollingCoordinator)] {
- });
-}
-
-void ScrollingTreeIOS::scrollingTreeNodeDidScroll(ScrollingNodeID nodeID, const FloatPoint& scrollPosition, const Optional<FloatPoint>& layoutViewportOrigin, ScrollingLayerPositionAction scrollingLayerPositionAction)
-{
- if (!m_scrollingCoordinator)
- return;
-
- if (nodeID == rootNode()->scrollingNodeID())
- setMainFrameScrollPosition(scrollPosition);
-
- callOnMainThread([scrollingCoordinator = m_scrollingCoordinator, nodeID, scrollPosition, layoutViewportOrigin, localIsHandlingProgrammaticScroll = isHandlingProgrammaticScroll(), scrollingLayerPositionAction] {
- scrollingCoordinator->scheduleUpdateScrollPositionAfterAsyncScroll(nodeID, scrollPosition, layoutViewportOrigin, localIsHandlingProgrammaticScroll, scrollingLayerPositionAction);
- });
-}
-
-Ref<ScrollingTreeNode> ScrollingTreeIOS::createScrollingTreeNode(ScrollingNodeType nodeType, ScrollingNodeID nodeID)
-{
- switch (nodeType) {
- case ScrollingNodeType::MainFrame:
- case ScrollingNodeType::Subframe:
- return ScrollingTreeFrameScrollingNodeIOS::create(*this, nodeType, nodeID);
- case ScrollingNodeType::FrameHosting:
- return ScrollingTreeFrameHostingNode::create(*this, nodeID);
- case ScrollingNodeType::Overflow:
- ASSERT_NOT_REACHED();
- break;
- case ScrollingNodeType::Fixed:
- return ScrollingTreeFixedNode::create(*this, nodeID);
- case ScrollingNodeType::Sticky:
- return ScrollingTreeStickyNode::create(*this, nodeID);
- }
- ASSERT_NOT_REACHED();
- return ScrollingTreeFixedNode::create(*this, nodeID);
-}
-
-FloatRect ScrollingTreeIOS::fixedPositionRect()
-{
- // When ScrollingTreeIOS starts being used for WK1 on iOS, this needs to get the customFixedPositionRect from
- // the ScrollingCoordinator.
- ASSERT_NOT_REACHED();
- return FloatRect();
-}
-
-void ScrollingTreeIOS::currentSnapPointIndicesDidChange(WebCore::ScrollingNodeID nodeID, unsigned horizontal, unsigned vertical)
-{
- if (!m_scrollingCoordinator)
- return;
-
- callOnMainThread([scrollingCoordinator = m_scrollingCoordinator, nodeID, horizontal, vertical] {
- scrollingCoordinator->setActiveScrollSnapIndices(nodeID, horizontal, vertical);
- });
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(ASYNC_SCROLLING) && PLATFORM(IOS_FAMILY)
Deleted: trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeIOS.h (241996 => 241997)
--- trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeIOS.h 2019-02-23 23:24:27 UTC (rev 241996)
+++ trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeIOS.h 2019-02-24 00:03:37 UTC (rev 241997)
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#pragma once
-
-#if ENABLE(ASYNC_SCROLLING) && PLATFORM(IOS_FAMILY)
-
-#include "ScrollingStateTree.h"
-#include "ScrollingTree.h"
-
-namespace WebCore {
-
-class AsyncScrollingCoordinator;
-
-class ScrollingTreeIOS final : public ScrollingTree {
-public:
- static Ref<ScrollingTreeIOS> create(AsyncScrollingCoordinator&);
- virtual ~ScrollingTreeIOS();
-
-private:
- explicit ScrollingTreeIOS(AsyncScrollingCoordinator&);
-
- bool isScrollingTreeIOS() const final { return true; }
-
- // No wheel events on iOS
- ScrollingEventResult handleWheelEvent(const PlatformWheelEvent&) final { return ScrollingEventResult::DidNotHandleEvent; }
- ScrollingEventResult tryToHandleWheelEvent(const PlatformWheelEvent&) final { return ScrollingEventResult::DidNotHandleEvent; }
-
- void invalidate() final;
-
- Ref<ScrollingTreeNode> createScrollingTreeNode(ScrollingNodeType, ScrollingNodeID) final;
- void scrollingTreeNodeDidScroll(ScrollingNodeID, const FloatPoint& scrollPosition, const Optional<FloatPoint>& layoutViewportOrigin, ScrollingLayerPositionAction = ScrollingLayerPositionAction::Sync) final;
- void currentSnapPointIndicesDidChange(WebCore::ScrollingNodeID, unsigned horizontal, unsigned vertical) final;
- FloatRect fixedPositionRect() final;
-
- RefPtr<AsyncScrollingCoordinator> m_scrollingCoordinator;
-};
-
-} // namespace WebCore
-
-SPECIALIZE_TYPE_TRAITS_SCROLLING_TREE(WebCore::ScrollingTreeIOS, isScrollingTreeIOS())
-
-#endif // ENABLE(ASYNC_SCROLLING) && PLATFORM(IOS_FAMILY)
Modified: trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm (241996 => 241997)
--- trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm 2019-02-23 23:24:27 UTC (rev 241996)
+++ trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm 2019-02-24 00:03:37 UTC (rev 241997)
@@ -237,8 +237,7 @@
// FIXME: wrong if we're not the main frame.
updateMainFramePinState(scrollPosition);
- FloatPoint visibleContentOrigin = scrollPosition;
- FloatRect newLayoutViewport = layoutViewportForScrollPosition(visibleContentOrigin, frameScaleFactor());
+ FloatRect newLayoutViewport = layoutViewportForScrollPosition(scrollPosition, frameScaleFactor());
setLayoutViewport(newLayoutViewport);
auto layoutViewportOrigin = newLayoutViewport.location();
Modified: trunk/Source/WebKit/ChangeLog (241996 => 241997)
--- trunk/Source/WebKit/ChangeLog 2019-02-23 23:24:27 UTC (rev 241996)
+++ trunk/Source/WebKit/ChangeLog 2019-02-24 00:03:37 UTC (rev 241997)
@@ -1,3 +1,32 @@
+2019-02-23 Simon Fraser <simon.fra...@apple.com>
+
+ Remove remnants of iOS WK1 scrolling tree code
+ https://bugs.webkit.org/show_bug.cgi?id=194980
+
+ Reviewed by Sam Weinig.
+
+ Remove ScrollingTreeIOS and ScrollingCoordinatorIOS which were never instantiated.
+
+ Merge ScrollingTreeFrameScrollingNodeIOS into ScrollingTreeFrameScrollingNodeRemoteIOS,
+ removing code which never applies to iOS WK2 (e.g. the synchronous scrolling code path).
+
+ * UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp:
+ * UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.h:
+ * UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm:
+ (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::ScrollingTreeFrameScrollingNodeRemoteIOS):
+ (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateBeforeChildren):
+ (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateAfterChildren):
+ (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::minimumScrollPosition const):
+ (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::maximumScrollPosition const):
+ (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::scrollPosition const):
+ (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::setScrollPosition):
+ (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::setScrollLayerPosition):
+ (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateChildNodesAfterScroll):
+ (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateLayersAfterDelegatedScroll):
+ (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateLayersAfterViewportChange):
+ (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateLayersAfterAncestorChange):
+ * UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.h:
+
2019-02-23 Keith Miller <keith_mil...@apple.com>
Add new mac target numbers
Modified: trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp (241996 => 241997)
--- trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp 2019-02-23 23:24:27 UTC (rev 241996)
+++ trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp 2019-02-24 00:03:37 UTC (rev 241997)
@@ -37,7 +37,6 @@
#if PLATFORM(IOS_FAMILY)
#include "ScrollingTreeFrameScrollingNodeRemoteIOS.h"
#include "ScrollingTreeOverflowScrollingNodeIOS.h"
-#include <WebCore/ScrollingTreeFrameScrollingNodeIOS.h>
#else
#include "ScrollingTreeFrameScrollingNodeRemoteMac.h"
#endif
Modified: trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.h (241996 => 241997)
--- trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.h 2019-02-23 23:24:27 UTC (rev 241996)
+++ trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.h 2019-02-24 00:03:37 UTC (rev 241997)
@@ -27,13 +27,13 @@
#if ENABLE(ASYNC_SCROLLING) && PLATFORM(IOS_FAMILY)
-#include <WebCore/ScrollingTreeFrameScrollingNodeIOS.h>
+#include <WebCore/ScrollingTreeFrameScrollingNode.h>
namespace WebKit {
class ScrollingTreeScrollingNodeDelegateIOS;
-class ScrollingTreeFrameScrollingNodeRemoteIOS : public WebCore::ScrollingTreeFrameScrollingNodeIOS {
+class ScrollingTreeFrameScrollingNodeRemoteIOS : public WebCore::ScrollingTreeFrameScrollingNode {
public:
static Ref<ScrollingTreeFrameScrollingNodeRemoteIOS> create(WebCore::ScrollingTree&, WebCore::ScrollingNodeType, WebCore::ScrollingNodeID);
virtual ~ScrollingTreeFrameScrollingNodeRemoteIOS();
@@ -44,13 +44,24 @@
void commitStateBeforeChildren(const WebCore::ScrollingStateNode&) override;
void commitStateAfterChildren(const WebCore::ScrollingStateNode&) override;
+ FloatPoint minimumScrollPosition() const override;
+ FloatPoint maximumScrollPosition() const override;
+
WebCore::FloatPoint scrollPosition() const override;
+ void setScrollPosition(const WebCore::FloatPoint&, WebCore::ScrollPositionClamp = WebCore::ScrollPositionClamp::ToContentEdges) override;
void setScrollLayerPosition(const WebCore::FloatPoint&, const WebCore::FloatRect& layoutViewport) override;
+ void updateChildNodesAfterScroll(const FloatPoint&);
+
void updateLayersAfterDelegatedScroll(const WebCore::FloatPoint& scrollPosition) override;
+ void updateLayersAfterViewportChange(const WebCore::FloatRect& fixedPositionRect, double scale) override;
void updateLayersAfterAncestorChange(const WebCore::ScrollingTreeNode& changedNode, const WebCore::FloatRect& fixedPositionRect, const WebCore::FloatSize& cumulativeDelta) override;
std::unique_ptr<ScrollingTreeScrollingNodeDelegateIOS> m_scrollingNodeDelegate;
+
+ RetainPtr<CALayer> m_counterScrollingLayer;
+ RetainPtr<CALayer> m_headerLayer;
+ RetainPtr<CALayer> m_footerLayer;
};
} // namespace WebKit
Modified: trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm (241996 => 241997)
--- trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm 2019-02-23 23:24:27 UTC (rev 241996)
+++ trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm 2019-02-24 00:03:37 UTC (rev 241997)
@@ -40,7 +40,7 @@
}
ScrollingTreeFrameScrollingNodeRemoteIOS::ScrollingTreeFrameScrollingNodeRemoteIOS(ScrollingTree& scrollingTree, ScrollingNodeType nodeType, ScrollingNodeID nodeID)
- : ScrollingTreeFrameScrollingNodeIOS(scrollingTree, nodeType, nodeID)
+ : ScrollingTreeFrameScrollingNode(scrollingTree, nodeType, nodeID)
{
}
@@ -50,8 +50,19 @@
void ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateBeforeChildren(const ScrollingStateNode& stateNode)
{
- ScrollingTreeFrameScrollingNodeIOS::commitStateBeforeChildren(stateNode);
+ ScrollingTreeFrameScrollingNode::commitStateBeforeChildren(stateNode);
+
+ const auto& scrollingStateNode = downcast<ScrollingStateFrameScrollingNode>(stateNode);
+ if (scrollingStateNode.hasChangedProperty(ScrollingStateFrameScrollingNode::CounterScrollingLayer))
+ m_counterScrollingLayer = scrollingStateNode.counterScrollingLayer();
+
+ if (scrollingStateNode.hasChangedProperty(ScrollingStateFrameScrollingNode::HeaderLayer))
+ m_headerLayer = scrollingStateNode.headerLayer();
+
+ if (scrollingStateNode.hasChangedProperty(ScrollingStateFrameScrollingNode::FooterLayer))
+ m_footerLayer = scrollingStateNode.footerLayer();
+
if (stateNode.hasChangedProperty(ScrollingStateScrollingNode::ScrollContainerLayer)) {
if (scrollContainerLayer())
m_scrollingNodeDelegate = std::make_unique<ScrollingTreeScrollingNodeDelegateIOS>(*this);
@@ -65,29 +76,61 @@
void ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateAfterChildren(const ScrollingStateNode& stateNode)
{
- ScrollingTreeFrameScrollingNodeIOS::commitStateAfterChildren(stateNode);
+ ScrollingTreeFrameScrollingNode::commitStateAfterChildren(stateNode);
+ const auto& scrollingStateNode = downcast<ScrollingStateFrameScrollingNode>(stateNode);
+
+ // Update the scroll position after child nodes have been updated, because they need to have updated their constraints before any scrolling happens.
+ if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::RequestedScrollPosition))
+ setScrollPosition(scrollingStateNode.requestedScrollPosition());
+
if (m_scrollingNodeDelegate)
m_scrollingNodeDelegate->commitStateAfterChildren(downcast<ScrollingStateScrollingNode>(stateNode));
}
-void ScrollingTreeFrameScrollingNodeRemoteIOS::updateLayersAfterAncestorChange(const ScrollingTreeNode& changedNode, const FloatRect& fixedPositionRect, const FloatSize& cumulativeDelta)
+FloatPoint ScrollingTreeFrameScrollingNodeRemoteIOS::minimumScrollPosition() const
{
- if (m_scrollingNodeDelegate) {
- m_scrollingNodeDelegate->updateLayersAfterAncestorChange(changedNode, fixedPositionRect, cumulativeDelta);
- return;
- }
- ScrollingTreeFrameScrollingNodeIOS::updateLayersAfterAncestorChange(changedNode, fixedPositionRect, cumulativeDelta);
+ FloatPoint position = ScrollableArea::scrollPositionFromOffset(FloatPoint(), toFloatSize(scrollOrigin()));
+
+ if (isRootNode() && scrollingTree().scrollPinningBehavior() == PinToBottom)
+ position.setY(maximumScrollPosition().y());
+
+ return position;
}
+FloatPoint ScrollingTreeFrameScrollingNodeRemoteIOS::maximumScrollPosition() const
+{
+ FloatPoint position = ScrollableArea::scrollPositionFromOffset(FloatPoint(totalContentsSizeForRubberBand() - scrollableAreaSize()), toFloatSize(scrollOrigin()));
+ position = position.expandedTo(FloatPoint());
+
+ if (isRootNode() && scrollingTree().scrollPinningBehavior() == PinToTop)
+ position.setY(minimumScrollPosition().y());
+
+ return position;
+}
+
FloatPoint ScrollingTreeFrameScrollingNodeRemoteIOS::scrollPosition() const
{
if (m_scrollingNodeDelegate)
return m_scrollingNodeDelegate->scrollPosition();
- return ScrollingTreeFrameScrollingNodeIOS::scrollPosition();
+ return -scrolledContentsLayer().position;
}
+void ScrollingTreeFrameScrollingNodeRemoteIOS::setScrollPosition(const FloatPoint& position, ScrollPositionClamp clamp)
+{
+ auto scrollPosition = position;
+ if (clamp == ScrollPositionClamp::ToContentEdges)
+ scrollPosition = clampScrollPosition(scrollPosition);
+
+ FloatRect newLayoutViewport = layoutViewportForScrollPosition(scrollPosition, frameScaleFactor());
+ setLayoutViewport(newLayoutViewport);
+ auto layoutViewportOrigin = newLayoutViewport.location();
+
+ setScrollLayerPosition(scrollPosition, layoutViewport());
+ scrollingTree().scrollingTreeNodeDidScroll(scrollingNodeID(), scrollPosition, layoutViewportOrigin);
+}
+
void ScrollingTreeFrameScrollingNodeRemoteIOS::setScrollLayerPosition(const FloatPoint& scrollPosition, const FloatRect& layoutViewport)
{
if (m_scrollingNodeDelegate) {
@@ -94,9 +137,48 @@
m_scrollingNodeDelegate->setScrollLayerPosition(scrollPosition);
return;
}
- ScrollingTreeFrameScrollingNodeIOS::setScrollLayerPosition(scrollPosition, layoutViewport);
+
+ [scrolledContentsLayer() setPosition:-scrollPosition];
+ updateChildNodesAfterScroll(scrollPosition);
}
+void ScrollingTreeFrameScrollingNodeRemoteIOS::updateChildNodesAfterScroll(const FloatPoint& scrollPosition)
+{
+ ScrollBehaviorForFixedElements behaviorForFixed = scrollBehaviorForFixedElements();
+ FloatRect viewportRect(scrollPosition, scrollableAreaSize());
+ FloatPoint scrollPositionForFixedChildren = FrameView::scrollPositionForFixedPosition(enclosingLayoutRect(viewportRect), LayoutSize(totalContentsSize()), LayoutPoint(scrollPosition), scrollOrigin(), frameScaleFactor(), fixedElementsLayoutRelativeToFrame(), behaviorForFixed, headerHeight(), footerHeight());
+
+ [m_counterScrollingLayer setPosition:scrollPositionForFixedChildren];
+
+ if (m_headerLayer || m_footerLayer) {
+ // Generally the banners should have the same horizontal-position computation as a fixed element. However,
+ // the banners are not affected by the frameScaleFactor(), so if there is currently a non-1 frameScaleFactor()
+ // then we should recompute scrollPositionForFixedChildren for the banner with a scale factor of 1.
+ float horizontalScrollOffsetForBanner = scrollPositionForFixedChildren.x();
+ if (frameScaleFactor() != 1)
+ horizontalScrollOffsetForBanner = FrameView::scrollPositionForFixedPosition(enclosingLayoutRect(viewportRect), LayoutSize(totalContentsSize()), LayoutPoint(scrollPosition), scrollOrigin(), 1, fixedElementsLayoutRelativeToFrame(), behaviorForFixed, headerHeight(), footerHeight()).x();
+
+ if (m_headerLayer)
+ [m_headerLayer setPosition:FloatPoint(horizontalScrollOffsetForBanner, 0)];
+
+ if (m_footerLayer)
+ [m_footerLayer setPosition:FloatPoint(horizontalScrollOffsetForBanner, totalContentsSize().height() - footerHeight())];
+ }
+
+ if (!m_children)
+ return;
+
+
+ FloatRect fixedPositionRect;
+ if (!parent())
+ fixedPositionRect = scrollingTree().fixedPositionRect();
+ else
+ fixedPositionRect = FloatRect(scrollPosition, scrollableAreaSize());
+
+ for (auto& child : *m_children)
+ child->updateLayersAfterAncestorChange(*this, fixedPositionRect, FloatSize());
+}
+
void ScrollingTreeFrameScrollingNodeRemoteIOS::updateLayersAfterDelegatedScroll(const FloatPoint& scrollPosition)
{
if (m_scrollingNodeDelegate) {
@@ -103,9 +185,36 @@
m_scrollingNodeDelegate->updateChildNodesAfterScroll(scrollPosition);
return;
}
- ScrollingTreeFrameScrollingNodeIOS::updateLayersAfterDelegatedScroll(scrollPosition);
+
+ updateChildNodesAfterScroll(scrollPosition);
}
+void ScrollingTreeFrameScrollingNodeRemoteIOS::updateLayersAfterViewportChange(const FloatRect& fixedPositionRect, double /*scale*/)
+{
+ // Note: we never currently have a m_counterScrollingLayer (which is used for background-attachment:fixed) on iOS.
+ [m_counterScrollingLayer setPosition:fixedPositionRect.location()];
+
+ if (!m_children)
+ return;
+
+ for (auto& child : *m_children)
+ child->updateLayersAfterAncestorChange(*this, fixedPositionRect, FloatSize());
}
+void ScrollingTreeFrameScrollingNodeRemoteIOS::updateLayersAfterAncestorChange(const ScrollingTreeNode& changedNode, const FloatRect& fixedPositionRect, const FloatSize& cumulativeDelta)
+{
+ if (m_scrollingNodeDelegate) {
+ m_scrollingNodeDelegate->updateLayersAfterAncestorChange(changedNode, fixedPositionRect, cumulativeDelta);
+ return;
+ }
+
+ if (!m_children)
+ return;
+
+ FloatRect currFrameFixedPositionRect(scrollPosition(), scrollableAreaSize()); // FIXME: use up-to-date layout viewport.
+ for (auto& child : *m_children)
+ child->updateLayersAfterAncestorChange(changedNode, currFrameFixedPositionRect, { });
+}
+
+}
#endif
Modified: trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.h (241996 => 241997)
--- trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.h 2019-02-23 23:24:27 UTC (rev 241996)
+++ trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.h 2019-02-24 00:03:37 UTC (rev 241997)
@@ -53,8 +53,6 @@
void updateLayersAfterAncestorChange(const WebCore::ScrollingTreeNode& changedNode, const WebCore::FloatRect& fixedPositionRect, const WebCore::FloatSize& cumulativeDelta) override;
- WebCore::ScrollingEventResult handleWheelEvent(const WebCore::PlatformWheelEvent&) override { return WebCore::ScrollingEventResult::DidNotHandleEvent; }
-
std::unique_ptr<ScrollingTreeScrollingNodeDelegateIOS> m_scrollingNodeDelegate;
};