Diff
Modified: trunk/Source/WebCore/ChangeLog (240962 => 240963)
--- trunk/Source/WebCore/ChangeLog 2019-02-05 04:04:30 UTC (rev 240962)
+++ trunk/Source/WebCore/ChangeLog 2019-02-05 04:34:56 UTC (rev 240963)
@@ -1,3 +1,31 @@
+2019-02-04 Simon Fraser <[email protected]>
+
+ Move some macOS/iOS scrolling code into the scrolling/cocoa directory
+ https://bugs.webkit.org/show_bug.cgi?id=194245
+
+ Reviewed by Zalan Bujtas.
+
+ ScrollingTreeFixedNode and ScrollingTreeStickyNode are used on iOS and macOS, so move them to the cocoa
+ directory.
+
+ Standardize on the ordering of ENABLE(ASYNC_SCROLLING) && PLATFORM(MAC).
+
+ Stop building ScrollingThread for iOS (it's never used), and stub out some functions so things build.
+
+ * SourcesCocoa.txt:
+ * WebCore.xcodeproj/project.pbxproj:
+ * page/scrolling/ScrollingThread.cpp:
+ (WebCore::ScrollingThread::initializeRunLoop):
+ (WebCore::ScrollingThread::wakeUpRunLoop):
+ (WebCore::ScrollingThread::threadRunLoopSourceCallback):
+ * page/scrolling/cocoa/ScrollingTreeFixedNode.h: Renamed from Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.h.
+ * page/scrolling/cocoa/ScrollingTreeFixedNode.mm: Renamed from Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.mm.
+ * page/scrolling/cocoa/ScrollingTreeStickyNode.h: Renamed from Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.h.
+ * page/scrolling/cocoa/ScrollingTreeStickyNode.mm: Renamed from Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.mm.
+ * page/scrolling/mac/ScrollingThreadMac.mm:
+ * page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.h:
+ * page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:
+
2019-02-04 Ms2ger <[email protected]>
[GTK][WPE] Need a function to convert internal URI to display ("pretty") URI
Modified: trunk/Source/WebCore/SourcesCocoa.txt (240962 => 240963)
--- trunk/Source/WebCore/SourcesCocoa.txt 2019-02-05 04:04:30 UTC (rev 240962)
+++ trunk/Source/WebCore/SourcesCocoa.txt 2019-02-05 04:34:56 UTC (rev 240963)
@@ -146,6 +146,8 @@
page/scrolling/ScrollingMomentumCalculator.cpp
page/scrolling/cocoa/ScrollingStateNode.mm
+page/scrolling/cocoa/ScrollingTreeFixedNode.mm
+page/scrolling/cocoa/ScrollingTreeStickyNode.mm
page/scrolling/ios/ScrollingCoordinatorIOS.mm
page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm
@@ -155,12 +157,10 @@
page/scrolling/mac/ScrollingMomentumCalculatorMac.mm
page/scrolling/mac/ScrollingStateFrameScrollingNodeMac.mm
page/scrolling/mac/ScrollingThreadMac.mm
-page/scrolling/mac/ScrollingTreeFixedNode.mm
page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm
page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm
page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm
page/scrolling/mac/ScrollingTreeMac.cpp
-page/scrolling/mac/ScrollingTreeStickyNode.mm
platform/audio/AudioSession.cpp
Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (240962 => 240963)
--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2019-02-05 04:04:30 UTC (rev 240962)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2019-02-05 04:34:56 UTC (rev 240963)
@@ -359,10 +359,11 @@
0F8716701C869D83004FF0DE /* LengthPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F87166E1C869D83004FF0DE /* LengthPoint.h */; settings = {ATTRIBUTES = (Private, ); }; };
0F8B45721DC3FBA300443C3F /* IntersectionObserverCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F8B45711DC3FBA300443C3F /* IntersectionObserverCallback.h */; };
0F8B45761DC41DBA00443C3F /* JSIntersectionObserverCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F8B45741DC41DBA00443C3F /* JSIntersectionObserverCallback.h */; };
+ 0F94B6472208FE3600157014 /* ScrollingTreeFixedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F94B6422208F70100157014 /* ScrollingTreeFixedNode.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 0F94B6492208FE3B00157014 /* ScrollingTreeStickyNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F94B6432208F70200157014 /* ScrollingTreeStickyNode.h */; settings = {ATTRIBUTES = (Private, ); }; };
0F9DAA0F1FD1C66A0079C5B2 /* DOMGCOutputConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F9DAA0E1FD1C6640079C5B2 /* DOMGCOutputConstraint.h */; };
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, ); }; };
- 0FB8890A167D2FA10010CDA5 /* ScrollingTreeStickyNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB88908167D2FA10010CDA5 /* ScrollingTreeStickyNode.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 */; };
@@ -2705,7 +2706,6 @@
93C09A530B064DB3005ABD4D /* EventHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 93C09A520B064DB3005ABD4D /* EventHandler.h */; settings = {ATTRIBUTES = (Private, ); }; };
93C09C860B0657AA005ABD4D /* ScrollTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 93C09C850B0657AA005ABD4D /* ScrollTypes.h */; settings = {ATTRIBUTES = (Private, ); }; };
93C38BFF164473C700091EB2 /* ScrollingStateFixedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 93C38BFD164473C700091EB2 /* ScrollingStateFixedNode.h */; settings = {ATTRIBUTES = (Private, ); }; };
- 93C38C03164473DD00091EB2 /* ScrollingTreeFixedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 93C38C01164473DD00091EB2 /* ScrollingTreeFixedNode.h */; settings = {ATTRIBUTES = (Private, ); }; };
93C442000F813AE100C1A634 /* CollectionType.h in Headers */ = {isa = PBXBuildFile; fileRef = 93C441FF0F813AE100C1A634 /* CollectionType.h */; settings = {ATTRIBUTES = (Private, ); }; };
93C4A4151629DF5A00C3EB6E /* ScrollingTreeFrameScrollingNodeMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 93C4A4131629DF5A00C3EB6E /* ScrollingTreeFrameScrollingNodeMac.h */; settings = {ATTRIBUTES = (Private, ); }; };
93C4F6EB1108F9A50099D0DB /* AccessibilityScrollbar.h in Headers */ = {isa = PBXBuildFile; fileRef = 93C4F6E91108F9A50099D0DB /* AccessibilityScrollbar.h */; };
@@ -5790,6 +5790,10 @@
0F8B45731DC41DBA00443C3F /* JSIntersectionObserverCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIntersectionObserverCallback.cpp; sourceTree = "<group>"; };
0F8B45741DC41DBA00443C3F /* JSIntersectionObserverCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIntersectionObserverCallback.h; sourceTree = "<group>"; };
0F94A3951EF1B10500FBAFFB /* JSDOMQuadCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMQuadCustom.cpp; sourceTree = "<group>"; };
+ 0F94B6422208F70100157014 /* ScrollingTreeFixedNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ScrollingTreeFixedNode.h; path = page/scrolling/cocoa/ScrollingTreeFixedNode.h; sourceTree = SOURCE_ROOT; };
+ 0F94B6432208F70200157014 /* ScrollingTreeStickyNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ScrollingTreeStickyNode.h; path = page/scrolling/cocoa/ScrollingTreeStickyNode.h; sourceTree = SOURCE_ROOT; };
+ 0F94B6442208F70200157014 /* ScrollingTreeFixedNode.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = ScrollingTreeFixedNode.mm; path = page/scrolling/cocoa/ScrollingTreeFixedNode.mm; sourceTree = SOURCE_ROOT; };
+ 0F94B6452208F70300157014 /* ScrollingTreeStickyNode.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = ScrollingTreeStickyNode.mm; path = page/scrolling/cocoa/ScrollingTreeStickyNode.mm; sourceTree = SOURCE_ROOT; };
0F97A657155DA81E00FADD4C /* DisplayRefreshMonitorIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DisplayRefreshMonitorIOS.mm; sourceTree = "<group>"; };
0F9DAA0C1FD1C6630079C5B2 /* DOMGCOutputConstraint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMGCOutputConstraint.cpp; sourceTree = "<group>"; };
0F9DAA0E1FD1C6640079C5B2 /* DOMGCOutputConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMGCOutputConstraint.h; sourceTree = "<group>"; };
@@ -5799,8 +5803,6 @@
0FA88EBC16A8D1BD00F99984 /* ScrollingStateFrameScrollingNodeMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ScrollingStateFrameScrollingNodeMac.mm; sourceTree = "<group>"; };
0FB6252C18DE1B1500A07C05 /* GeometryUtilities.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GeometryUtilities.cpp; sourceTree = "<group>"; };
0FB6252D18DE1B1500A07C05 /* GeometryUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GeometryUtilities.h; sourceTree = "<group>"; };
- 0FB88908167D2FA10010CDA5 /* ScrollingTreeStickyNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollingTreeStickyNode.h; sourceTree = "<group>"; };
- 0FB88909167D2FA10010CDA5 /* ScrollingTreeStickyNode.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ScrollingTreeStickyNode.mm; sourceTree = "<group>"; };
0FB8890C167D30160010CDA5 /* ScrollingStateStickyNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollingStateStickyNode.cpp; sourceTree = "<group>"; };
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>"; };
@@ -10647,8 +10649,6 @@
93C09C850B0657AA005ABD4D /* ScrollTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollTypes.h; sourceTree = "<group>"; };
93C38BFC164473C700091EB2 /* ScrollingStateFixedNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollingStateFixedNode.cpp; sourceTree = "<group>"; };
93C38BFD164473C700091EB2 /* ScrollingStateFixedNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollingStateFixedNode.h; sourceTree = "<group>"; };
- 93C38C01164473DD00091EB2 /* ScrollingTreeFixedNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollingTreeFixedNode.h; sourceTree = "<group>"; };
- 93C38C02164473DD00091EB2 /* ScrollingTreeFixedNode.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ScrollingTreeFixedNode.mm; sourceTree = "<group>"; };
93C441FF0F813AE100C1A634 /* CollectionType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CollectionType.h; sourceTree = "<group>"; };
93C4A4131629DF5A00C3EB6E /* ScrollingTreeFrameScrollingNodeMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollingTreeFrameScrollingNodeMac.h; sourceTree = "<group>"; };
93C4A4141629DF5A00C3EB6E /* ScrollingTreeFrameScrollingNodeMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ScrollingTreeFrameScrollingNodeMac.mm; sourceTree = "<group>"; };
@@ -16979,8 +16979,6 @@
517DEEE31DE94ADC00B91644 /* ScrollingMomentumCalculatorMac.mm */,
0FA88EBC16A8D1BD00F99984 /* ScrollingStateFrameScrollingNodeMac.mm */,
1AF62F2314DAFE910041556C /* ScrollingThreadMac.mm */,
- 93C38C01164473DD00091EB2 /* ScrollingTreeFixedNode.h */,
- 93C38C02164473DD00091EB2 /* ScrollingTreeFixedNode.mm */,
93C4A4131629DF5A00C3EB6E /* ScrollingTreeFrameScrollingNodeMac.h */,
93C4A4141629DF5A00C3EB6E /* ScrollingTreeFrameScrollingNodeMac.mm */,
0FE5806119327A6200DE32EB /* ScrollingTreeMac.cpp */,
@@ -16989,8 +16987,6 @@
0FC05168219B5EBE0031C39E /* ScrollingTreeOverflowScrollingNodeMac.mm */,
0F37F0842202ACB700A89C0B /* ScrollingTreeScrollingNodeDelegateMac.h */,
0F37F0832202AC8F00A89C0B /* ScrollingTreeScrollingNodeDelegateMac.mm */,
- 0FB88908167D2FA10010CDA5 /* ScrollingTreeStickyNode.h */,
- 0FB88909167D2FA10010CDA5 /* ScrollingTreeStickyNode.mm */,
);
path = mac;
sourceTree = "<group>";
@@ -21817,6 +21813,10 @@
isa = PBXGroup;
children = (
93EF7D541954E98F00DFB71D /* ScrollingStateNode.mm */,
+ 0F94B6422208F70100157014 /* ScrollingTreeFixedNode.h */,
+ 0F94B6442208F70200157014 /* ScrollingTreeFixedNode.mm */,
+ 0F94B6432208F70200157014 /* ScrollingTreeStickyNode.h */,
+ 0F94B6452208F70300157014 /* ScrollingTreeStickyNode.mm */,
);
path = cocoa;
sourceTree = "<group>";
@@ -30025,7 +30025,6 @@
1A85B1E70A1B240500D8C87C /* JSHTMLDirectoryElement.h in Headers */,
1A85B2B70A1B2AC700D8C87C /* JSHTMLDivElement.h in Headers */,
1A85B1E90A1B240500D8C87C /* JSHTMLDListElement.h in Headers */,
- 71EADCD822087E720065A45F /* PointerID.h in Headers */,
1A494E350A12358B00FDAFC1 /* JSHTMLDocument.h in Headers */,
1A494BFB0A122F4400FDAFC1 /* JSHTMLElement.h in Headers */,
938E65F109F09840008A48EC /* JSHTMLElementWrapperFactory.h in Headers */,
@@ -31073,6 +31072,7 @@
71B5AB2621F1D9F400376E5C /* PointerCaptureController.h in Headers */,
317D3FF3215599F40034E3B9 /* PointerEvent.h in Headers */,
B2B1F7170D00CAA8004AEA64 /* PointerEventsHitRules.h in Headers */,
+ 71EADCD822087E720065A45F /* PointerID.h in Headers */,
3FF813A71DBA8640009BF001 /* PointerLockController.h in Headers */,
84730D921248F0B300D3A9C9 /* PointLightSource.h in Headers */,
9705997A107D975200A50A7C /* PolicyChecker.h in Headers */,
@@ -31465,7 +31465,7 @@
931CBD11161A44E900E4C874 /* ScrollingStateTree.h in Headers */,
1AF62F2614DAFEA10041556C /* ScrollingThread.h in Headers */,
1AAADDA414DB409F00AF64B3 /* ScrollingTree.h in Headers */,
- 93C38C03164473DD00091EB2 /* ScrollingTreeFixedNode.h in Headers */,
+ 0F94B6472208FE3600157014 /* ScrollingTreeFixedNode.h in Headers */,
0FD41E6821F80C0E000C006D /* ScrollingTreeFrameHostingNode.h in Headers */,
0FEA3E88191B3BD7000F1B55 /* ScrollingTreeFrameScrollingNode.h in Headers */,
0FC4E411187F82E10045882C /* ScrollingTreeFrameScrollingNodeIOS.h in Headers */,
@@ -31477,7 +31477,7 @@
9391A99D1629D70000297330 /* ScrollingTreeScrollingNode.h in Headers */,
A6D5A99D1629D70000297330 /* ScrollingTreeScrollingNodeDelegate.h in Headers */,
0F37F0852202BF9800A89C0B /* ScrollingTreeScrollingNodeDelegateMac.h in Headers */,
- 0FB8890A167D2FA10010CDA5 /* ScrollingTreeStickyNode.h in Headers */,
+ 0F94B6492208FE3B00157014 /* ScrollingTreeStickyNode.h in Headers */,
83C5795D1DA5C301006F9C97 /* ScrollIntoViewOptions.h in Headers */,
7AAFE8D019CB8672000F56D8 /* ScrollLatchingState.h in Headers */,
83C5795D1DA5C301006F9C86 /* ScrollLogicalPosition.h in Headers */,
Modified: trunk/Source/WebCore/page/scrolling/ScrollingThread.cpp (240962 => 240963)
--- trunk/Source/WebCore/page/scrolling/ScrollingThread.cpp 2019-02-05 04:04:30 UTC (rev 240962)
+++ trunk/Source/WebCore/page/scrolling/ScrollingThread.cpp 2019-02-05 04:34:56 UTC (rev 240963)
@@ -104,6 +104,25 @@
function();
}
+#if PLATFORM(IOS_FAMILY)
+NO_RETURN_DUE_TO_ASSERT void ScrollingThread::initializeRunLoop()
+{
+ ASSERT_NOT_REACHED();
+}
+
+void ScrollingThread::wakeUpRunLoop()
+{
+}
+
+void ScrollingThread::threadRunLoopSourceCallback(void*)
+{
+}
+
+void ScrollingThread::threadRunLoopSourceCallback()
+{
+}
+#endif // PLATFORM(IOS_FAMILY)
+
} // namespace WebCore
#endif // ENABLE(ASYNC_SCROLLING)
Copied: trunk/Source/WebCore/page/scrolling/cocoa/ScrollingTreeFixedNode.h (from rev 240962, trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.h) (0 => 240963)
--- trunk/Source/WebCore/page/scrolling/cocoa/ScrollingTreeFixedNode.h (rev 0)
+++ trunk/Source/WebCore/page/scrolling/cocoa/ScrollingTreeFixedNode.h 2019-02-05 04:34:56 UTC (rev 240963)
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2012 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)
+
+#include "ScrollingConstraints.h"
+#include "ScrollingTreeNode.h"
+#include <wtf/RetainPtr.h>
+
+OBJC_CLASS CALayer;
+
+namespace WebCore {
+
+class FixedPositionViewportConstraints;
+
+class ScrollingTreeFixedNode : public ScrollingTreeNode {
+public:
+ WEBCORE_EXPORT static Ref<ScrollingTreeFixedNode> create(ScrollingTree&, ScrollingNodeID);
+
+ virtual ~ScrollingTreeFixedNode();
+
+private:
+ ScrollingTreeFixedNode(ScrollingTree&, ScrollingNodeID);
+
+ void commitStateBeforeChildren(const ScrollingStateNode&) override;
+ void updateLayersAfterAncestorChange(const ScrollingTreeNode& changedNode, const FloatRect& fixedPositionRect, const FloatSize& cumulativeDelta) override;
+
+ void dumpProperties(WTF::TextStream&, ScrollingStateTreeAsTextBehavior) const override;
+
+ FixedPositionViewportConstraints m_constraints;
+ RetainPtr<CALayer> m_layer;
+};
+
+} // namespace WebCore
+
+SPECIALIZE_TYPE_TRAITS_SCROLLING_NODE(ScrollingTreeFixedNode, isFixedNode())
+
+#endif // ENABLE(ASYNC_SCROLLING)
Copied: trunk/Source/WebCore/page/scrolling/cocoa/ScrollingTreeFixedNode.mm (from rev 240962, trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.mm) (0 => 240963)
--- trunk/Source/WebCore/page/scrolling/cocoa/ScrollingTreeFixedNode.mm (rev 0)
+++ trunk/Source/WebCore/page/scrolling/cocoa/ScrollingTreeFixedNode.mm 2019-02-05 04:34:56 UTC (rev 240963)
@@ -0,0 +1,122 @@
+/*
+ * Copyright (C) 2012 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 "ScrollingTreeFixedNode.h"
+
+#if ENABLE(ASYNC_SCROLLING)
+
+#import "Logging.h"
+#import "ScrollingStateFixedNode.h"
+#import "ScrollingTree.h"
+#import <QuartzCore/CALayer.h>
+#import <wtf/text/TextStream.h>
+
+namespace WebCore {
+
+Ref<ScrollingTreeFixedNode> ScrollingTreeFixedNode::create(ScrollingTree& scrollingTree, ScrollingNodeID nodeID)
+{
+ return adoptRef(*new ScrollingTreeFixedNode(scrollingTree, nodeID));
+}
+
+ScrollingTreeFixedNode::ScrollingTreeFixedNode(ScrollingTree& scrollingTree, ScrollingNodeID nodeID)
+ : ScrollingTreeNode(scrollingTree, ScrollingNodeType::Fixed, nodeID)
+{
+ scrollingTree.fixedOrStickyNodeAdded();
+}
+
+ScrollingTreeFixedNode::~ScrollingTreeFixedNode()
+{
+ scrollingTree().fixedOrStickyNodeRemoved();
+}
+
+void ScrollingTreeFixedNode::commitStateBeforeChildren(const ScrollingStateNode& stateNode)
+{
+ const ScrollingStateFixedNode& fixedStateNode = downcast<ScrollingStateFixedNode>(stateNode);
+
+ if (fixedStateNode.hasChangedProperty(ScrollingStateNode::Layer))
+ m_layer = fixedStateNode.layer();
+
+ if (stateNode.hasChangedProperty(ScrollingStateFixedNode::ViewportConstraints))
+ m_constraints = fixedStateNode.viewportConstraints();
+}
+
+namespace ScrollingTreeFixedNodeInternal {
+static inline CGPoint operator*(CGPoint& a, const CGSize& b)
+{
+ return CGPointMake(a.x * b.width, a.y * b.height);
+}
+}
+
+void ScrollingTreeFixedNode::updateLayersAfterAncestorChange(const ScrollingTreeNode& changedNode, const FloatRect& fixedPositionRect, const FloatSize& cumulativeDelta)
+{
+ using namespace ScrollingTreeFixedNodeInternal;
+ FloatPoint layerPosition = m_constraints.layerPositionForViewportRect(fixedPositionRect);
+
+ LOG_WITH_STREAM(Scrolling, stream << "ScrollingTreeFixedNode " << scrollingNodeID() << " updateLayersAfterAncestorChange: new viewport " << fixedPositionRect << " viewportRectAtLastLayout " << m_constraints.viewportRectAtLastLayout() << " last layer pos " << m_constraints.layerPositionAtLastLayout() << " new offset from top " << (fixedPositionRect.y() - layerPosition.y()));
+
+ layerPosition -= cumulativeDelta;
+
+ CGRect layerBounds = [m_layer bounds];
+ CGPoint anchorPoint = [m_layer anchorPoint];
+ CGPoint newPosition = layerPosition - m_constraints.alignmentOffset() + anchorPoint * layerBounds.size;
+
+ if (isnan(newPosition.x) || isnan(newPosition.y)) {
+ WTFLogAlways("Attempt to call [CALayer setPosition] with NaN: newPosition=(%f, %f) layerPosition=(%f, %f) alignmentOffset=(%f, %f)",
+ newPosition.x, newPosition.y, layerPosition.x(), layerPosition.y(),
+ m_constraints.alignmentOffset().width(), m_constraints.alignmentOffset().height());
+ ASSERT_NOT_REACHED();
+ return;
+ }
+
+ [m_layer setPosition:newPosition];
+
+ if (!m_children)
+ return;
+
+ FloatSize newDelta = layerPosition - m_constraints.layerPositionAtLastLayout() + cumulativeDelta;
+
+ for (auto& child : *m_children)
+ child->updateLayersAfterAncestorChange(changedNode, fixedPositionRect, newDelta);
+}
+
+void ScrollingTreeFixedNode::dumpProperties(TextStream& ts, ScrollingStateTreeAsTextBehavior behavior) const
+{
+ ts << "fixed node";
+ ScrollingTreeNode::dumpProperties(ts, behavior);
+ ts.dumpProperty("fixed constraints", m_constraints);
+
+ if (behavior & ScrollingStateTreeAsTextBehaviorIncludeLayerPositions) {
+ FloatRect layerBounds = [m_layer bounds];
+ FloatPoint anchorPoint = [m_layer anchorPoint];
+ FloatPoint position = [m_layer position];
+ FloatPoint layerTopLeft = position - toFloatSize(anchorPoint) * layerBounds.size() + m_constraints.alignmentOffset();
+ ts.dumpProperty("layer top left", layerTopLeft);
+ }
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(ASYNC_SCROLLING)
Copied: trunk/Source/WebCore/page/scrolling/cocoa/ScrollingTreeStickyNode.h (from rev 240962, trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.h) (0 => 240963)
--- trunk/Source/WebCore/page/scrolling/cocoa/ScrollingTreeStickyNode.h (rev 0)
+++ trunk/Source/WebCore/page/scrolling/cocoa/ScrollingTreeStickyNode.h 2019-02-05 04:34:56 UTC (rev 240963)
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2012 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)
+
+#include "ScrollingConstraints.h"
+#include "ScrollingTreeNode.h"
+#include <wtf/RetainPtr.h>
+
+OBJC_CLASS CALayer;
+
+namespace WebCore {
+
+class StickyPositionViewportConstraints;
+
+class ScrollingTreeStickyNode : public ScrollingTreeNode {
+public:
+ WEBCORE_EXPORT static Ref<ScrollingTreeStickyNode> create(ScrollingTree&, ScrollingNodeID);
+
+ virtual ~ScrollingTreeStickyNode();
+
+private:
+ ScrollingTreeStickyNode(ScrollingTree&, ScrollingNodeID);
+
+ void commitStateBeforeChildren(const ScrollingStateNode&) override;
+ void updateLayersAfterAncestorChange(const ScrollingTreeNode& changedNode, const FloatRect& fixedPositionRect, const FloatSize& cumulativeDelta) override;
+
+ void dumpProperties(WTF::TextStream&, ScrollingStateTreeAsTextBehavior) const override;
+
+ StickyPositionViewportConstraints m_constraints;
+ RetainPtr<CALayer> m_layer;
+};
+
+} // namespace WebCore
+
+SPECIALIZE_TYPE_TRAITS_SCROLLING_NODE(ScrollingTreeStickyNode, isStickyNode())
+
+#endif // ENABLE(ASYNC_SCROLLING)
Copied: trunk/Source/WebCore/page/scrolling/cocoa/ScrollingTreeStickyNode.mm (from rev 240962, trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.mm) (0 => 240963)
--- trunk/Source/WebCore/page/scrolling/cocoa/ScrollingTreeStickyNode.mm (rev 0)
+++ trunk/Source/WebCore/page/scrolling/cocoa/ScrollingTreeStickyNode.mm 2019-02-05 04:34:56 UTC (rev 240963)
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2012 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 "ScrollingTreeStickyNode.h"
+
+#if ENABLE(ASYNC_SCROLLING)
+
+#import "Logging.h"
+#import "ScrollingStateStickyNode.h"
+#import "ScrollingTree.h"
+#import "ScrollingTreeFrameScrollingNode.h"
+#import "ScrollingTreeOverflowScrollingNode.h"
+#import <QuartzCore/CALayer.h>
+#import <wtf/text/TextStream.h>
+
+namespace WebCore {
+
+Ref<ScrollingTreeStickyNode> ScrollingTreeStickyNode::create(ScrollingTree& scrollingTree, ScrollingNodeID nodeID)
+{
+ return adoptRef(*new ScrollingTreeStickyNode(scrollingTree, nodeID));
+}
+
+ScrollingTreeStickyNode::ScrollingTreeStickyNode(ScrollingTree& scrollingTree, ScrollingNodeID nodeID)
+ : ScrollingTreeNode(scrollingTree, ScrollingNodeType::Sticky, nodeID)
+{
+ scrollingTree.fixedOrStickyNodeAdded();
+}
+
+ScrollingTreeStickyNode::~ScrollingTreeStickyNode()
+{
+ scrollingTree().fixedOrStickyNodeRemoved();
+}
+
+void ScrollingTreeStickyNode::commitStateBeforeChildren(const ScrollingStateNode& stateNode)
+{
+ const ScrollingStateStickyNode& stickyStateNode = downcast<ScrollingStateStickyNode>(stateNode);
+
+ if (stickyStateNode.hasChangedProperty(ScrollingStateNode::Layer))
+ m_layer = stickyStateNode.layer();
+
+ if (stateNode.hasChangedProperty(ScrollingStateStickyNode::ViewportConstraints))
+ m_constraints = stickyStateNode.viewportConstraints();
+}
+
+namespace ScrollingTreeStickyNodeInternal {
+static inline CGPoint operator*(CGPoint& a, const CGSize& b)
+{
+ return CGPointMake(a.x * b.width, a.y * b.height);
+}
+}
+
+void ScrollingTreeStickyNode::updateLayersAfterAncestorChange(const ScrollingTreeNode& changedNode, const FloatRect& fixedPositionRect, const FloatSize& cumulativeDelta)
+{
+ using namespace ScrollingTreeStickyNodeInternal;
+ bool adjustStickyLayer = false;
+ FloatRect constrainingRect;
+
+ if (is<ScrollingTreeOverflowScrollingNode>(*parent())) {
+ constrainingRect = FloatRect(downcast<ScrollingTreeOverflowScrollingNode>(*parent()).scrollPosition(), m_constraints.constrainingRectAtLastLayout().size());
+ adjustStickyLayer = true;
+ } else if (is<ScrollingTreeFrameScrollingNode>(*parent())) {
+ constrainingRect = fixedPositionRect;
+ adjustStickyLayer = true;
+ }
+
+ LOG_WITH_STREAM(Scrolling, stream << "ScrollingTreeStickyNode " << scrollingNodeID() << " updateLayersAfterAncestorChange: new viewport " << fixedPositionRect << " constrainingRectAtLastLayout " << m_constraints.constrainingRectAtLastLayout() << " last layer pos " << m_constraints.layerPositionAtLastLayout() << " adjustStickyLayer " << adjustStickyLayer);
+
+ FloatSize deltaForDescendants = cumulativeDelta;
+
+ if (adjustStickyLayer) {
+ FloatPoint layerPosition = m_constraints.layerPositionForConstrainingRect(constrainingRect);
+
+ CGRect layerBounds = [m_layer bounds];
+ CGPoint anchorPoint = [m_layer anchorPoint];
+ CGPoint newPosition = layerPosition - m_constraints.alignmentOffset() + anchorPoint * layerBounds.size;
+ [m_layer setPosition:newPosition];
+
+ deltaForDescendants = layerPosition - m_constraints.layerPositionAtLastLayout() + cumulativeDelta;
+ }
+
+ if (!m_children)
+ return;
+
+ for (auto& child : *m_children)
+ child->updateLayersAfterAncestorChange(changedNode, fixedPositionRect, deltaForDescendants);
+}
+
+void ScrollingTreeStickyNode::dumpProperties(TextStream& ts, ScrollingStateTreeAsTextBehavior behavior) const
+{
+ ts << "sticky node";
+
+ ScrollingTreeNode::dumpProperties(ts, behavior);
+ ts.dumpProperty("sticky constraints", m_constraints);
+
+ if (behavior & ScrollingStateTreeAsTextBehaviorIncludeLayerPositions) {
+ FloatRect layerBounds = [m_layer bounds];
+ FloatPoint anchorPoint = [m_layer anchorPoint];
+ FloatPoint position = [m_layer position];
+ FloatPoint layerTopLeft = position - toFloatSize(anchorPoint) * layerBounds.size() + m_constraints.alignmentOffset();
+ ts.dumpProperty("layer top left", layerTopLeft);
+ }
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(ASYNC_SCROLLING)
Modified: trunk/Source/WebCore/page/scrolling/mac/ScrollingThreadMac.mm (240962 => 240963)
--- trunk/Source/WebCore/page/scrolling/mac/ScrollingThreadMac.mm 2019-02-05 04:04:30 UTC (rev 240962)
+++ trunk/Source/WebCore/page/scrolling/mac/ScrollingThreadMac.mm 2019-02-05 04:34:56 UTC (rev 240963)
@@ -26,7 +26,7 @@
#include "config.h"
#include "ScrollingThread.h"
-#if ENABLE(ASYNC_SCROLLING)
+#if ENABLE(ASYNC_SCROLLING) && PLATFORM(MAC)
#include <mutex>
@@ -72,4 +72,4 @@
} // namespace WebCore
-#endif // ENABLE(ASYNC_SCROLLING)
+#endif // ENABLE(ASYNC_SCROLLING) && PLATFORM(MAC)
Deleted: trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.h (240962 => 240963)
--- trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.h 2019-02-05 04:04:30 UTC (rev 240962)
+++ trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.h 2019-02-05 04:34:56 UTC (rev 240963)
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2012 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)
-
-#include "ScrollingConstraints.h"
-#include "ScrollingTreeNode.h"
-#include <wtf/RetainPtr.h>
-
-OBJC_CLASS CALayer;
-
-namespace WebCore {
-
-class FixedPositionViewportConstraints;
-
-class ScrollingTreeFixedNode : public ScrollingTreeNode {
-public:
- WEBCORE_EXPORT static Ref<ScrollingTreeFixedNode> create(ScrollingTree&, ScrollingNodeID);
-
- virtual ~ScrollingTreeFixedNode();
-
-private:
- ScrollingTreeFixedNode(ScrollingTree&, ScrollingNodeID);
-
- void commitStateBeforeChildren(const ScrollingStateNode&) override;
- void updateLayersAfterAncestorChange(const ScrollingTreeNode& changedNode, const FloatRect& fixedPositionRect, const FloatSize& cumulativeDelta) override;
-
- void dumpProperties(WTF::TextStream&, ScrollingStateTreeAsTextBehavior) const override;
-
- FixedPositionViewportConstraints m_constraints;
- RetainPtr<CALayer> m_layer;
-};
-
-} // namespace WebCore
-
-SPECIALIZE_TYPE_TRAITS_SCROLLING_NODE(ScrollingTreeFixedNode, isFixedNode())
-
-#endif // ENABLE(ASYNC_SCROLLING)
Deleted: trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.mm (240962 => 240963)
--- trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.mm 2019-02-05 04:04:30 UTC (rev 240962)
+++ trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.mm 2019-02-05 04:34:56 UTC (rev 240963)
@@ -1,122 +0,0 @@
-/*
- * Copyright (C) 2012 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 "ScrollingTreeFixedNode.h"
-
-#if ENABLE(ASYNC_SCROLLING)
-
-#import "Logging.h"
-#import "ScrollingStateFixedNode.h"
-#import "ScrollingTree.h"
-#import <QuartzCore/CALayer.h>
-#import <wtf/text/TextStream.h>
-
-namespace WebCore {
-
-Ref<ScrollingTreeFixedNode> ScrollingTreeFixedNode::create(ScrollingTree& scrollingTree, ScrollingNodeID nodeID)
-{
- return adoptRef(*new ScrollingTreeFixedNode(scrollingTree, nodeID));
-}
-
-ScrollingTreeFixedNode::ScrollingTreeFixedNode(ScrollingTree& scrollingTree, ScrollingNodeID nodeID)
- : ScrollingTreeNode(scrollingTree, ScrollingNodeType::Fixed, nodeID)
-{
- scrollingTree.fixedOrStickyNodeAdded();
-}
-
-ScrollingTreeFixedNode::~ScrollingTreeFixedNode()
-{
- scrollingTree().fixedOrStickyNodeRemoved();
-}
-
-void ScrollingTreeFixedNode::commitStateBeforeChildren(const ScrollingStateNode& stateNode)
-{
- const ScrollingStateFixedNode& fixedStateNode = downcast<ScrollingStateFixedNode>(stateNode);
-
- if (fixedStateNode.hasChangedProperty(ScrollingStateNode::Layer))
- m_layer = fixedStateNode.layer();
-
- if (stateNode.hasChangedProperty(ScrollingStateFixedNode::ViewportConstraints))
- m_constraints = fixedStateNode.viewportConstraints();
-}
-
-namespace ScrollingTreeFixedNodeInternal {
-static inline CGPoint operator*(CGPoint& a, const CGSize& b)
-{
- return CGPointMake(a.x * b.width, a.y * b.height);
-}
-}
-
-void ScrollingTreeFixedNode::updateLayersAfterAncestorChange(const ScrollingTreeNode& changedNode, const FloatRect& fixedPositionRect, const FloatSize& cumulativeDelta)
-{
- using namespace ScrollingTreeFixedNodeInternal;
- FloatPoint layerPosition = m_constraints.layerPositionForViewportRect(fixedPositionRect);
-
- LOG_WITH_STREAM(Scrolling, stream << "ScrollingTreeFixedNode " << scrollingNodeID() << " updateLayersAfterAncestorChange: new viewport " << fixedPositionRect << " viewportRectAtLastLayout " << m_constraints.viewportRectAtLastLayout() << " last layer pos " << m_constraints.layerPositionAtLastLayout() << " new offset from top " << (fixedPositionRect.y() - layerPosition.y()));
-
- layerPosition -= cumulativeDelta;
-
- CGRect layerBounds = [m_layer bounds];
- CGPoint anchorPoint = [m_layer anchorPoint];
- CGPoint newPosition = layerPosition - m_constraints.alignmentOffset() + anchorPoint * layerBounds.size;
-
- if (isnan(newPosition.x) || isnan(newPosition.y)) {
- WTFLogAlways("Attempt to call [CALayer setPosition] with NaN: newPosition=(%f, %f) layerPosition=(%f, %f) alignmentOffset=(%f, %f)",
- newPosition.x, newPosition.y, layerPosition.x(), layerPosition.y(),
- m_constraints.alignmentOffset().width(), m_constraints.alignmentOffset().height());
- ASSERT_NOT_REACHED();
- return;
- }
-
- [m_layer setPosition:newPosition];
-
- if (!m_children)
- return;
-
- FloatSize newDelta = layerPosition - m_constraints.layerPositionAtLastLayout() + cumulativeDelta;
-
- for (auto& child : *m_children)
- child->updateLayersAfterAncestorChange(changedNode, fixedPositionRect, newDelta);
-}
-
-void ScrollingTreeFixedNode::dumpProperties(TextStream& ts, ScrollingStateTreeAsTextBehavior behavior) const
-{
- ts << "fixed node";
- ScrollingTreeNode::dumpProperties(ts, behavior);
- ts.dumpProperty("fixed constraints", m_constraints);
-
- if (behavior & ScrollingStateTreeAsTextBehaviorIncludeLayerPositions) {
- FloatRect layerBounds = [m_layer bounds];
- FloatPoint anchorPoint = [m_layer anchorPoint];
- FloatPoint position = [m_layer position];
- FloatPoint layerTopLeft = position - toFloatSize(anchorPoint) * layerBounds.size() + m_constraints.alignmentOffset();
- ts.dumpProperty("layer top left", layerTopLeft);
- }
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(ASYNC_SCROLLING)
Modified: trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.h (240962 => 240963)
--- trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.h 2019-02-05 04:04:30 UTC (rev 240962)
+++ trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.h 2019-02-05 04:34:56 UTC (rev 240963)
@@ -27,7 +27,7 @@
#include "ScrollingTreeScrollingNodeDelegate.h"
-#if PLATFORM(MAC) && ENABLE(ASYNC_SCROLLING)
+#if ENABLE(ASYNC_SCROLLING) && PLATFORM(MAC)
#include "ScrollController.h"
Modified: trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm (240962 => 240963)
--- trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm 2019-02-05 04:04:30 UTC (rev 240962)
+++ trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm 2019-02-05 04:34:56 UTC (rev 240963)
@@ -26,7 +26,7 @@
#import "config.h"
#import "ScrollingTreeScrollingNodeDelegateMac.h"
-#if PLATFORM(MAC) && ENABLE(ASYNC_SCROLLING)
+#if ENABLE(ASYNC_SCROLLING) && PLATFORM(MAC)
#import "Logging.h"
#import "ScrollingTree.h"
Deleted: trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.h (240962 => 240963)
--- trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.h 2019-02-05 04:04:30 UTC (rev 240962)
+++ trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.h 2019-02-05 04:34:56 UTC (rev 240963)
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2012 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)
-
-#include "ScrollingConstraints.h"
-#include "ScrollingTreeNode.h"
-#include <wtf/RetainPtr.h>
-
-OBJC_CLASS CALayer;
-
-namespace WebCore {
-
-class StickyPositionViewportConstraints;
-
-class ScrollingTreeStickyNode : public ScrollingTreeNode {
-public:
- WEBCORE_EXPORT static Ref<ScrollingTreeStickyNode> create(ScrollingTree&, ScrollingNodeID);
-
- virtual ~ScrollingTreeStickyNode();
-
-private:
- ScrollingTreeStickyNode(ScrollingTree&, ScrollingNodeID);
-
- void commitStateBeforeChildren(const ScrollingStateNode&) override;
- void updateLayersAfterAncestorChange(const ScrollingTreeNode& changedNode, const FloatRect& fixedPositionRect, const FloatSize& cumulativeDelta) override;
-
- void dumpProperties(WTF::TextStream&, ScrollingStateTreeAsTextBehavior) const override;
-
- StickyPositionViewportConstraints m_constraints;
- RetainPtr<CALayer> m_layer;
-};
-
-} // namespace WebCore
-
-SPECIALIZE_TYPE_TRAITS_SCROLLING_NODE(ScrollingTreeStickyNode, isStickyNode())
-
-#endif // ENABLE(ASYNC_SCROLLING)
Deleted: trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.mm (240962 => 240963)
--- trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.mm 2019-02-05 04:04:30 UTC (rev 240962)
+++ trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.mm 2019-02-05 04:34:56 UTC (rev 240963)
@@ -1,129 +0,0 @@
-/*
- * Copyright (C) 2012 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 "ScrollingTreeStickyNode.h"
-
-#if ENABLE(ASYNC_SCROLLING)
-
-#import "Logging.h"
-#import "ScrollingStateStickyNode.h"
-#import "ScrollingTree.h"
-#import "ScrollingTreeFrameScrollingNode.h"
-#import "ScrollingTreeOverflowScrollingNode.h"
-#import <QuartzCore/CALayer.h>
-#import <wtf/text/TextStream.h>
-
-namespace WebCore {
-
-Ref<ScrollingTreeStickyNode> ScrollingTreeStickyNode::create(ScrollingTree& scrollingTree, ScrollingNodeID nodeID)
-{
- return adoptRef(*new ScrollingTreeStickyNode(scrollingTree, nodeID));
-}
-
-ScrollingTreeStickyNode::ScrollingTreeStickyNode(ScrollingTree& scrollingTree, ScrollingNodeID nodeID)
- : ScrollingTreeNode(scrollingTree, ScrollingNodeType::Sticky, nodeID)
-{
- scrollingTree.fixedOrStickyNodeAdded();
-}
-
-ScrollingTreeStickyNode::~ScrollingTreeStickyNode()
-{
- scrollingTree().fixedOrStickyNodeRemoved();
-}
-
-void ScrollingTreeStickyNode::commitStateBeforeChildren(const ScrollingStateNode& stateNode)
-{
- const ScrollingStateStickyNode& stickyStateNode = downcast<ScrollingStateStickyNode>(stateNode);
-
- if (stickyStateNode.hasChangedProperty(ScrollingStateNode::Layer))
- m_layer = stickyStateNode.layer();
-
- if (stateNode.hasChangedProperty(ScrollingStateStickyNode::ViewportConstraints))
- m_constraints = stickyStateNode.viewportConstraints();
-}
-
-namespace ScrollingTreeStickyNodeInternal {
-static inline CGPoint operator*(CGPoint& a, const CGSize& b)
-{
- return CGPointMake(a.x * b.width, a.y * b.height);
-}
-}
-
-void ScrollingTreeStickyNode::updateLayersAfterAncestorChange(const ScrollingTreeNode& changedNode, const FloatRect& fixedPositionRect, const FloatSize& cumulativeDelta)
-{
- using namespace ScrollingTreeStickyNodeInternal;
- bool adjustStickyLayer = false;
- FloatRect constrainingRect;
-
- if (is<ScrollingTreeOverflowScrollingNode>(*parent())) {
- constrainingRect = FloatRect(downcast<ScrollingTreeOverflowScrollingNode>(*parent()).scrollPosition(), m_constraints.constrainingRectAtLastLayout().size());
- adjustStickyLayer = true;
- } else if (is<ScrollingTreeFrameScrollingNode>(*parent())) {
- constrainingRect = fixedPositionRect;
- adjustStickyLayer = true;
- }
-
- LOG_WITH_STREAM(Scrolling, stream << "ScrollingTreeStickyNode " << scrollingNodeID() << " updateLayersAfterAncestorChange: new viewport " << fixedPositionRect << " constrainingRectAtLastLayout " << m_constraints.constrainingRectAtLastLayout() << " last layer pos " << m_constraints.layerPositionAtLastLayout() << " adjustStickyLayer " << adjustStickyLayer);
-
- FloatSize deltaForDescendants = cumulativeDelta;
-
- if (adjustStickyLayer) {
- FloatPoint layerPosition = m_constraints.layerPositionForConstrainingRect(constrainingRect);
-
- CGRect layerBounds = [m_layer bounds];
- CGPoint anchorPoint = [m_layer anchorPoint];
- CGPoint newPosition = layerPosition - m_constraints.alignmentOffset() + anchorPoint * layerBounds.size;
- [m_layer setPosition:newPosition];
-
- deltaForDescendants = layerPosition - m_constraints.layerPositionAtLastLayout() + cumulativeDelta;
- }
-
- if (!m_children)
- return;
-
- for (auto& child : *m_children)
- child->updateLayersAfterAncestorChange(changedNode, fixedPositionRect, deltaForDescendants);
-}
-
-void ScrollingTreeStickyNode::dumpProperties(TextStream& ts, ScrollingStateTreeAsTextBehavior behavior) const
-{
- ts << "sticky node";
-
- ScrollingTreeNode::dumpProperties(ts, behavior);
- ts.dumpProperty("sticky constraints", m_constraints);
-
- if (behavior & ScrollingStateTreeAsTextBehaviorIncludeLayerPositions) {
- FloatRect layerBounds = [m_layer bounds];
- FloatPoint anchorPoint = [m_layer anchorPoint];
- FloatPoint position = [m_layer position];
- FloatPoint layerTopLeft = position - toFloatSize(anchorPoint) * layerBounds.size() + m_constraints.alignmentOffset();
- ts.dumpProperty("layer top left", layerTopLeft);
- }
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(ASYNC_SCROLLING)
Modified: trunk/Source/WebKit/ChangeLog (240962 => 240963)
--- trunk/Source/WebKit/ChangeLog 2019-02-05 04:04:30 UTC (rev 240962)
+++ trunk/Source/WebKit/ChangeLog 2019-02-05 04:34:56 UTC (rev 240963)
@@ -1,3 +1,15 @@
+2019-02-04 Simon Fraser <[email protected]>
+
+ Move some macOS/iOS scrolling code into the scrolling/cocoa directory
+ https://bugs.webkit.org/show_bug.cgi?id=194245
+
+ Reviewed by Zalan Bujtas.
+
+ Use PLATFORM(MAC), not !PLATFORM(IOS_FAMILY).
+
+ * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
+ * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
+
2019-02-04 Ms2ger <[email protected]>
[GTK][WPE] Need a function to convert internal URI to display ("pretty") URI
Modified: trunk/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h (240962 => 240963)
--- trunk/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h 2019-02-05 04:04:30 UTC (rev 240962)
+++ trunk/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h 2019-02-05 04:34:56 UTC (rev 240963)
@@ -25,7 +25,7 @@
#pragma once
-#if !PLATFORM(IOS_FAMILY)
+#if PLATFORM(MAC)
#include "CallbackID.h"
#include "DrawingArea.h"
@@ -186,5 +186,4 @@
SPECIALIZE_TYPE_TRAITS_DRAWING_AREA(TiledCoreAnimationDrawingArea, DrawingAreaTypeTiledCoreAnimation)
-#endif // !PLATFORM(IOS_FAMILY)
-
+#endif // PLATFORM(MAC)
Modified: trunk/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm (240962 => 240963)
--- trunk/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm 2019-02-05 04:04:30 UTC (rev 240962)
+++ trunk/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm 2019-02-05 04:34:56 UTC (rev 240963)
@@ -26,7 +26,7 @@
#import "config.h"
#import "TiledCoreAnimationDrawingArea.h"
-#if !PLATFORM(IOS_FAMILY)
+#if PLATFORM(MAC)
#import "ColorSpaceData.h"
#import "DrawingAreaProxyMessages.h"
@@ -999,4 +999,4 @@
} // namespace WebKit
-#endif // !PLATFORM(IOS_FAMILY)
+#endif // PLATFORM(MAC)