- a/Source/WebCore/ChangeLog +42 lines
Lines 1-3 a/Source/WebCore/ChangeLog_sec1
1
2021-03-31  Martin Robinson  <mrobinson@igalia.com>
2
3
        Expose an alias for ScrollSnapOffsetInfo<T> to make it easier to use
4
        https://bugs.webkit.org/show_bug.cgi?id=223986
5
6
        Reviewed by NOBODY (OOPS!).
7
8
        No new tests. This should not change behavior.
9
10
        * page/scrolling/AsyncScrollingCoordinator.cpp:
11
        (WebCore::setStateScrollingNodeSnapOffsetsAsFloat): Use new aliases.
12
        * page/scrolling/ScrollSnapOffsetsInfo.cpp:
13
        (WebCore::FloatScrollSnapOffsetsInfo::convertUnits const): Ditto.
14
        (WebCore::LayoutScrollSnapOffsetsInfo::convertUnits const): Ditto.
15
        (WebCore::LayoutScrollSnapOffsetsInfo::closestSnapOffset const): Ditto.
16
        (WebCore::FloatScrollSnapOffsetsInfo::closestSnapOffset const): Ditto.
17
        (WebCore::ScrollSnapOffsetsInfo<float>::convertUnits const): Deleted.
18
        (WebCore::ScrollSnapOffsetsInfo<LayoutUnit>::convertUnits const): Deleted.
19
        (WebCore::ScrollSnapOffsetsInfo<LayoutUnit>::closestSnapOffset const): Deleted.
20
        (WebCore::ScrollSnapOffsetsInfo<float>::closestSnapOffset const): Deleted.
21
        * page/scrolling/ScrollSnapOffsetsInfo.h: Ditto.
22
        * page/scrolling/ScrollingStateScrollingNode.cpp:
23
        (WebCore::ScrollingStateScrollingNode::setSnapOffsetsInfo): Ditto.
24
        * page/scrolling/ScrollingStateScrollingNode.h:
25
        (WebCore::ScrollingStateScrollingNode::snapOffsetsInfo const): Ditto.
26
        * page/scrolling/ScrollingTreeScrollingNode.cpp:
27
        (WebCore::ScrollingTreeScrollingNode::snapOffsetsInfo const): Ditto.
28
        * page/scrolling/ScrollingTreeScrollingNode.h: Ditto.
29
        * platform/ScrollController.cpp:
30
        (WebCore::ScrollController::updateScrollSnapPoints): Ditto.
31
        * platform/ScrollController.h: Ditto.
32
        * platform/ScrollSnapAnimatorState.h:
33
        (WebCore::ScrollSnapAnimatorState::snapOffsetInfo const): Ditto.
34
        (WebCore::ScrollSnapAnimatorState::setSnapOffsetInfo): Ditto.
35
        * platform/ScrollableArea.cpp:
36
        (WebCore::ScrollableArea::ensureSnapOffsetsInfo): Ditto.
37
        (WebCore::ScrollableArea::snapOffsetInfo const): Ditto.
38
        (WebCore::ScrollableArea::setScrollSnapOffsetInfo): Ditto.
39
        * platform/ScrollableArea.h: Ditto.
40
        * platform/mac/ScrollAnimatorMac.mm:
41
        (WebCore::gestureShouldBeginSnap): Ditto.
42
1
2021-03-28  Sam Weinig  <weinig@apple.com>
43
2021-03-28  Sam Weinig  <weinig@apple.com>
2
44
3
        Remove JSCustomXPathNSResolver.h/JSCustomXPathNSResolver.cpp from the Xcode project as they don't exist
45
        Remove JSCustomXPathNSResolver.h/JSCustomXPathNSResolver.cpp from the Xcode project as they don't exist
- a/Source/WebKit/ChangeLog +14 lines
Lines 1-3 a/Source/WebKit/ChangeLog_sec1
1
2021-03-31  Martin Robinson  <mrobinson@igalia.com>
2
3
        Expose an alias for ScrollSnapOffsetInfo<T> to make it easier to use
4
        https://bugs.webkit.org/show_bug.cgi?id=223986
5
6
        Reviewed by NOBODY (OOPS!).
7
8
        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
9
        (ArgumentCoder<ScrollingStateScrollingNode>::decode): Use new aliases.
10
        (ArgumentCoder<FloatScrollSnapOffsetsInfo>::encode): Ditto.
11
        (ArgumentCoder<FloatScrollSnapOffsetsInfo>::decode): Ditto.
12
        (ArgumentCoder<ScrollSnapOffsetsInfo<float>>::encode): Deleted.
13
        (ArgumentCoder<ScrollSnapOffsetsInfo<float>>::decode): Deleted.
14
1
2021-03-28  Said Abou-Hallawa  <said@apple.com>
15
2021-03-28  Said Abou-Hallawa  <said@apple.com>
2
16
3
        [GPU Process] Don't ever replay DisplayList items of a RemoteImageBuffer in WebProcess
17
        [GPU Process] Don't ever replay DisplayList items of a RemoteImageBuffer in WebProcess
- a/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp -2 / +2 lines
Lines 92-101 void AsyncScrollingCoordinator::handleWheelEventPhase(ScrollingNodeID nodeID, Pl a/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp_sec1
92
#endif
92
#endif
93
93
94
#if ENABLE(CSS_SCROLL_SNAP)
94
#if ENABLE(CSS_SCROLL_SNAP)
95
static inline void setStateScrollingNodeSnapOffsetsAsFloat(ScrollingStateScrollingNode& node, const ScrollSnapOffsetsInfo<LayoutUnit>* offsetInfo, float deviceScaleFactor)
95
static inline void setStateScrollingNodeSnapOffsetsAsFloat(ScrollingStateScrollingNode& node, const LayoutScrollSnapOffsetsInfo* offsetInfo, float deviceScaleFactor)
96
{
96
{
97
    if (!offsetInfo) {
97
    if (!offsetInfo) {
98
        node.setSnapOffsetsInfo(ScrollSnapOffsetsInfo<float>());
98
        node.setSnapOffsetsInfo(FloatScrollSnapOffsetsInfo());
99
        return;
99
        return;
100
    }
100
    }
101
101
- a/Source/WebCore/page/scrolling/ScrollSnapOffsetsInfo.cpp -4 / +4 lines
Lines 377-401 static ScrollSnapOffsetsInfo<OutputType> convertOffsetInfo(const ScrollSnapOffse a/Source/WebCore/page/scrolling/ScrollSnapOffsetsInfo.cpp_sec1
377
}
377
}
378
378
379
template <> template <>
379
template <> template <>
380
ScrollSnapOffsetsInfo<LayoutUnit> ScrollSnapOffsetsInfo<float>::convertUnits(float /* unusedScaleFactor */) const
380
LayoutScrollSnapOffsetsInfo FloatScrollSnapOffsetsInfo::convertUnits(float /* unusedScaleFactor */) const
381
{
381
{
382
    return convertOffsetInfo<float, LayoutUnit>(*this);
382
    return convertOffsetInfo<float, LayoutUnit>(*this);
383
}
383
}
384
384
385
template <> template <>
385
template <> template <>
386
ScrollSnapOffsetsInfo<float> ScrollSnapOffsetsInfo<LayoutUnit>::convertUnits(float deviceScaleFactor) const
386
FloatScrollSnapOffsetsInfo LayoutScrollSnapOffsetsInfo::convertUnits(float deviceScaleFactor) const
387
{
387
{
388
    return convertOffsetInfo<LayoutUnit, float>(*this, deviceScaleFactor);
388
    return convertOffsetInfo<LayoutUnit, float>(*this, deviceScaleFactor);
389
}
389
}
390
390
391
template <>
391
template <>
392
std::pair<LayoutUnit, unsigned> ScrollSnapOffsetsInfo<LayoutUnit>::closestSnapOffset(ScrollEventAxis axis, LayoutUnit scrollDestinationOffset, float velocity, Optional<LayoutUnit> originalPositionForDirectionalSnapping) const
392
std::pair<LayoutUnit, unsigned> LayoutScrollSnapOffsetsInfo::closestSnapOffset(ScrollEventAxis axis, LayoutUnit scrollDestinationOffset, float velocity, Optional<LayoutUnit> originalPositionForDirectionalSnapping) const
393
{
393
{
394
    return closestSnapOffsetWithOffsetsAndRanges(offsetsForAxis(axis), offsetRangesForAxis(axis), scrollDestinationOffset, velocity, originalPositionForDirectionalSnapping);
394
    return closestSnapOffsetWithOffsetsAndRanges(offsetsForAxis(axis), offsetRangesForAxis(axis), scrollDestinationOffset, velocity, originalPositionForDirectionalSnapping);
395
}
395
}
396
396
397
template <>
397
template <>
398
std::pair<float, unsigned> ScrollSnapOffsetsInfo<float>::closestSnapOffset(ScrollEventAxis axis, float scrollDestinationOffset, float velocity, Optional<float> originalPositionForDirectionalSnapping) const
398
std::pair<float, unsigned> FloatScrollSnapOffsetsInfo::closestSnapOffset(ScrollEventAxis axis, float scrollDestinationOffset, float velocity, Optional<float> originalPositionForDirectionalSnapping) const
399
{
399
{
400
    return closestSnapOffsetWithOffsetsAndRanges(offsetsForAxis(axis), offsetRangesForAxis(axis), scrollDestinationOffset, velocity, originalPositionForDirectionalSnapping);
400
    return closestSnapOffsetWithOffsetsAndRanges(offsetsForAxis(axis), offsetRangesForAxis(axis), scrollDestinationOffset, velocity, originalPositionForDirectionalSnapping);
401
}
401
}
- a/Source/WebCore/page/scrolling/ScrollSnapOffsetsInfo.h -4 / +7 lines
Lines 89-103 struct ScrollSnapOffsetsInfo { a/Source/WebCore/page/scrolling/ScrollSnapOffsetsInfo.h_sec1
89
    WEBCORE_EXPORT std::pair<T, unsigned> closestSnapOffset(ScrollEventAxis, T scrollDestinationOffset, float velocity, Optional<T> originalPositionForDirectionalSnapping = WTF::nullopt) const;
89
    WEBCORE_EXPORT std::pair<T, unsigned> closestSnapOffset(ScrollEventAxis, T scrollDestinationOffset, float velocity, Optional<T> originalPositionForDirectionalSnapping = WTF::nullopt) const;
90
};
90
};
91
91
92
using LayoutScrollSnapOffsetsInfo = ScrollSnapOffsetsInfo<LayoutUnit>;
93
using FloatScrollSnapOffsetsInfo = ScrollSnapOffsetsInfo<float>;
94
92
template <> template <>
95
template <> template <>
93
ScrollSnapOffsetsInfo<LayoutUnit> ScrollSnapOffsetsInfo<float>::convertUnits(float /* unusedScaleFactor */) const;
96
LayoutScrollSnapOffsetsInfo FloatScrollSnapOffsetsInfo::convertUnits(float /* unusedScaleFactor */) const;
94
template <>
97
template <>
95
WEBCORE_EXPORT std::pair<float, unsigned> ScrollSnapOffsetsInfo<float>::closestSnapOffset(ScrollEventAxis, float scrollDestinationOffset, float velocity, Optional<float> originalPositionForDirectionalSnapping) const;
98
WEBCORE_EXPORT std::pair<float, unsigned> FloatScrollSnapOffsetsInfo::closestSnapOffset(ScrollEventAxis, float scrollDestinationOffset, float velocity, Optional<float> originalPositionForDirectionalSnapping) const;
96
99
97
template <> template <>
100
template <> template <>
98
ScrollSnapOffsetsInfo<float> ScrollSnapOffsetsInfo<LayoutUnit>::convertUnits(float deviceScaleFactor) const;
101
FloatScrollSnapOffsetsInfo LayoutScrollSnapOffsetsInfo::convertUnits(float deviceScaleFactor) const;
99
template <>
102
template <>
100
WEBCORE_EXPORT std::pair<LayoutUnit, unsigned> ScrollSnapOffsetsInfo<LayoutUnit>::closestSnapOffset(ScrollEventAxis, LayoutUnit scrollDestinationOffset, float velocity, Optional<LayoutUnit> originalPositionForDirectionalSnapping) const;
103
WEBCORE_EXPORT std::pair<LayoutUnit, unsigned> LayoutScrollSnapOffsetsInfo::closestSnapOffset(ScrollEventAxis, LayoutUnit scrollDestinationOffset, float velocity, Optional<LayoutUnit> originalPositionForDirectionalSnapping) const;
101
104
102
const unsigned invalidSnapOffsetIndex = UINT_MAX;
105
const unsigned invalidSnapOffsetIndex = UINT_MAX;
103
106
- a/Source/WebCore/page/scrolling/ScrollingStateScrollingNode.cpp -1 / +1 lines
Lines 157-163 void ScrollingStateScrollingNode::setScrollOrigin(const IntPoint& scrollOrigin) a/Source/WebCore/page/scrolling/ScrollingStateScrollingNode.cpp_sec1
157
}
157
}
158
158
159
#if ENABLE(CSS_SCROLL_SNAP)
159
#if ENABLE(CSS_SCROLL_SNAP)
160
void ScrollingStateScrollingNode::setSnapOffsetsInfo(const ScrollSnapOffsetsInfo<float>& info)
160
void ScrollingStateScrollingNode::setSnapOffsetsInfo(const FloatScrollSnapOffsetsInfo& info)
161
{
161
{
162
    if (m_snapOffsetsInfo.isEqual(info))
162
    if (m_snapOffsetsInfo.isEqual(info))
163
        return;
163
        return;
- a/Source/WebCore/page/scrolling/ScrollingStateScrollingNode.h -3 / +3 lines
Lines 71-78 public: a/Source/WebCore/page/scrolling/ScrollingStateScrollingNode.h_sec1
71
    WEBCORE_EXPORT void setScrollOrigin(const IntPoint&);
71
    WEBCORE_EXPORT void setScrollOrigin(const IntPoint&);
72
72
73
#if ENABLE(CSS_SCROLL_SNAP)
73
#if ENABLE(CSS_SCROLL_SNAP)
74
    const ScrollSnapOffsetsInfo<float>& snapOffsetsInfo() const { return m_snapOffsetsInfo; }
74
    const FloatScrollSnapOffsetsInfo& snapOffsetsInfo() const { return m_snapOffsetsInfo; }
75
    WEBCORE_EXPORT void setSnapOffsetsInfo(const ScrollSnapOffsetsInfo<float>& newOffsetsInfo);
75
    WEBCORE_EXPORT void setSnapOffsetsInfo(const FloatScrollSnapOffsetsInfo& newOffsetsInfo);
76
76
77
    unsigned currentHorizontalSnapPointIndex() const { return m_currentHorizontalSnapPointIndex; }
77
    unsigned currentHorizontalSnapPointIndex() const { return m_currentHorizontalSnapPointIndex; }
78
    WEBCORE_EXPORT void setCurrentHorizontalSnapPointIndex(unsigned);
78
    WEBCORE_EXPORT void setCurrentHorizontalSnapPointIndex(unsigned);
Lines 130-136 private: a/Source/WebCore/page/scrolling/ScrollingStateScrollingNode.h_sec2
130
    IntPoint m_scrollOrigin;
130
    IntPoint m_scrollOrigin;
131
131
132
#if ENABLE(CSS_SCROLL_SNAP)
132
#if ENABLE(CSS_SCROLL_SNAP)
133
    ScrollSnapOffsetsInfo<float> m_snapOffsetsInfo;
133
    FloatScrollSnapOffsetsInfo m_snapOffsetsInfo;
134
    unsigned m_currentHorizontalSnapPointIndex { 0 };
134
    unsigned m_currentHorizontalSnapPointIndex { 0 };
135
    unsigned m_currentVerticalSnapPointIndex { 0 };
135
    unsigned m_currentVerticalSnapPointIndex { 0 };
136
#endif
136
#endif
- a/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp -1 / +1 lines
Lines 335-341 void ScrollingTreeScrollingNode::dumpProperties(TextStream& ts, ScrollingStateTr a/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp_sec1
335
}
335
}
336
336
337
#if ENABLE(CSS_SCROLL_SNAP)
337
#if ENABLE(CSS_SCROLL_SNAP)
338
const ScrollSnapOffsetsInfo<float>& ScrollingTreeScrollingNode::snapOffsetsInfo() const
338
const FloatScrollSnapOffsetsInfo& ScrollingTreeScrollingNode::snapOffsetsInfo() const
339
{
339
{
340
    return m_snapOffsetsInfo;
340
    return m_snapOffsetsInfo;
341
}
341
}
- a/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h -2 / +2 lines
Lines 95-101 public: a/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h_sec1
95
    bool canHaveScrollbars() const { return m_scrollableAreaParameters.horizontalScrollbarMode != ScrollbarAlwaysOff || m_scrollableAreaParameters.verticalScrollbarMode != ScrollbarAlwaysOff; }
95
    bool canHaveScrollbars() const { return m_scrollableAreaParameters.horizontalScrollbarMode != ScrollbarAlwaysOff || m_scrollableAreaParameters.verticalScrollbarMode != ScrollbarAlwaysOff; }
96
96
97
#if ENABLE(CSS_SCROLL_SNAP)
97
#if ENABLE(CSS_SCROLL_SNAP)
98
    const ScrollSnapOffsetsInfo<float>& snapOffsetsInfo() const;
98
    const FloatScrollSnapOffsetsInfo& snapOffsetsInfo() const;
99
    unsigned currentHorizontalSnapPointIndex() const { return m_currentHorizontalSnapPointIndex; }
99
    unsigned currentHorizontalSnapPointIndex() const { return m_currentHorizontalSnapPointIndex; }
100
    unsigned currentVerticalSnapPointIndex() const { return m_currentVerticalSnapPointIndex; }
100
    unsigned currentVerticalSnapPointIndex() const { return m_currentVerticalSnapPointIndex; }
101
    void setCurrentHorizontalSnapPointIndex(unsigned index) { m_currentHorizontalSnapPointIndex = index; }
101
    void setCurrentHorizontalSnapPointIndex(unsigned index) { m_currentHorizontalSnapPointIndex = index; }
Lines 159-165 private: a/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h_sec2
159
    FloatPoint m_currentScrollPosition;
159
    FloatPoint m_currentScrollPosition;
160
    IntPoint m_scrollOrigin;
160
    IntPoint m_scrollOrigin;
161
#if ENABLE(CSS_SCROLL_SNAP)
161
#if ENABLE(CSS_SCROLL_SNAP)
162
    ScrollSnapOffsetsInfo<float> m_snapOffsetsInfo;
162
    FloatScrollSnapOffsetsInfo m_snapOffsetsInfo;
163
    unsigned m_currentHorizontalSnapPointIndex { 0 };
163
    unsigned m_currentHorizontalSnapPointIndex { 0 };
164
    unsigned m_currentVerticalSnapPointIndex { 0 };
164
    unsigned m_currentVerticalSnapPointIndex { 0 };
165
#endif
165
#endif
- a/Source/WebCore/platform/ScrollController.cpp -1 / +1 lines
Lines 67-73 void ScrollController::updateScrollSnapState(const ScrollableArea& scrollableAre a/Source/WebCore/platform/ScrollController.cpp_sec1
67
    updateScrollSnapPoints(*snapOffsetInfo);
67
    updateScrollSnapPoints(*snapOffsetInfo);
68
}
68
}
69
69
70
void ScrollController::updateScrollSnapPoints(const ScrollSnapOffsetsInfo<LayoutUnit>& snapOffsetInfo)
70
void ScrollController::updateScrollSnapPoints(const LayoutScrollSnapOffsetsInfo& snapOffsetInfo)
71
{
71
{
72
    if (snapOffsetInfo.isEmpty()) {
72
    if (snapOffsetInfo.isEmpty()) {
73
        m_scrollSnapState = nullptr;
73
        m_scrollSnapState = nullptr;
- a/Source/WebCore/platform/ScrollController.h -1 / +1 lines
Lines 132-138 public: a/Source/WebCore/platform/ScrollController.h_sec1
132
    void scrollPositionChanged();
132
    void scrollPositionChanged();
133
133
134
#if ENABLE(CSS_SCROLL_SNAP)
134
#if ENABLE(CSS_SCROLL_SNAP)
135
    void updateScrollSnapPoints(const ScrollSnapOffsetsInfo<LayoutUnit>&);
135
    void updateScrollSnapPoints(const LayoutScrollSnapOffsetsInfo&);
136
    void setActiveScrollSnapIndexForAxis(ScrollEventAxis, unsigned);
136
    void setActiveScrollSnapIndexForAxis(ScrollEventAxis, unsigned);
137
    void setActiveScrollSnapIndicesForOffset(ScrollOffset);
137
    void setActiveScrollSnapIndicesForOffset(ScrollOffset);
138
    bool activeScrollSnapIndexDidChange() const { return m_activeScrollSnapIndexDidChange; }
138
    bool activeScrollSnapIndexDidChange() const { return m_activeScrollSnapIndexDidChange; }
- a/Source/WebCore/platform/ScrollSnapAnimatorState.h -3 / +3 lines
Lines 62-69 public: a/Source/WebCore/platform/ScrollSnapAnimatorState.h_sec1
62
        return axis == ScrollEventAxis::Horizontal ? m_snapOffsetsInfo.horizontalSnapOffsetRanges : m_snapOffsetsInfo.verticalSnapOffsetRanges;
62
        return axis == ScrollEventAxis::Horizontal ? m_snapOffsetsInfo.horizontalSnapOffsetRanges : m_snapOffsetsInfo.verticalSnapOffsetRanges;
63
    }
63
    }
64
64
65
    const ScrollSnapOffsetsInfo<LayoutUnit>& snapOffsetInfo() const { return m_snapOffsetsInfo; }
65
    const LayoutScrollSnapOffsetsInfo& snapOffsetInfo() const { return m_snapOffsetsInfo; }
66
    void setSnapOffsetInfo(const ScrollSnapOffsetsInfo<LayoutUnit>& newInfo) { m_snapOffsetsInfo = newInfo; }
66
    void setSnapOffsetInfo(const LayoutScrollSnapOffsetsInfo& newInfo) { m_snapOffsetsInfo = newInfo; }
67
67
68
    void setSnapOffsetsAndPositionRangesForAxis(ScrollEventAxis axis, const Vector<SnapOffset<LayoutUnit>>& snapOffsets, const Vector<ScrollOffsetRange<LayoutUnit>>& snapOffsetRanges)
68
    void setSnapOffsetsAndPositionRangesForAxis(ScrollEventAxis axis, const Vector<SnapOffset<LayoutUnit>>& snapOffsets, const Vector<ScrollOffsetRange<LayoutUnit>>& snapOffsetRanges)
69
    {
69
    {
Lines 106-112 private: a/Source/WebCore/platform/ScrollSnapAnimatorState.h_sec2
106
106
107
    ScrollSnapState m_currentState { ScrollSnapState::UserInteraction };
107
    ScrollSnapState m_currentState { ScrollSnapState::UserInteraction };
108
108
109
    ScrollSnapOffsetsInfo<LayoutUnit> m_snapOffsetsInfo;
109
    LayoutScrollSnapOffsetsInfo m_snapOffsetsInfo;
110
110
111
    unsigned m_activeSnapIndexX { 0 };
111
    unsigned m_activeSnapIndexX { 0 };
112
    unsigned m_activeSnapIndexY { 0 };
112
    unsigned m_activeSnapIndexY { 0 };
- a/Source/WebCore/platform/ScrollableArea.cpp -4 / +4 lines
Lines 479-497 String ScrollableArea::verticalScrollbarStateForTesting() const a/Source/WebCore/platform/ScrollableArea.cpp_sec1
479
}
479
}
480
480
481
#if ENABLE(CSS_SCROLL_SNAP)
481
#if ENABLE(CSS_SCROLL_SNAP)
482
ScrollSnapOffsetsInfo<LayoutUnit>& ScrollableArea::ensureSnapOffsetsInfo()
482
LayoutScrollSnapOffsetsInfo& ScrollableArea::ensureSnapOffsetsInfo()
483
{
483
{
484
    if (!m_snapOffsetsInfo)
484
    if (!m_snapOffsetsInfo)
485
        m_snapOffsetsInfo = makeUnique<ScrollSnapOffsetsInfo<LayoutUnit>>();
485
        m_snapOffsetsInfo = makeUnique<LayoutScrollSnapOffsetsInfo>();
486
    return *m_snapOffsetsInfo;
486
    return *m_snapOffsetsInfo;
487
}
487
}
488
488
489
const ScrollSnapOffsetsInfo<LayoutUnit>* ScrollableArea::snapOffsetInfo() const
489
const LayoutScrollSnapOffsetsInfo* ScrollableArea::snapOffsetInfo() const
490
{
490
{
491
    return m_snapOffsetsInfo.get();
491
    return m_snapOffsetsInfo.get();
492
}
492
}
493
493
494
void ScrollableArea::setScrollSnapOffsetInfo(const ScrollSnapOffsetsInfo<LayoutUnit>& info)
494
void ScrollableArea::setScrollSnapOffsetInfo(const LayoutScrollSnapOffsetsInfo& info)
495
{
495
{
496
    if (info.isEmpty()) {
496
    if (info.isEmpty()) {
497
        clearSnapOffsets();
497
        clearSnapOffsets();
- a/Source/WebCore/platform/ScrollableArea.h -4 / +4 lines
Lines 91-99 public: a/Source/WebCore/platform/ScrollableArea.h_sec1
91
    bool usesScrollSnap() const;
91
    bool usesScrollSnap() const;
92
92
93
#if ENABLE(CSS_SCROLL_SNAP)
93
#if ENABLE(CSS_SCROLL_SNAP)
94
    WEBCORE_EXPORT const ScrollSnapOffsetsInfo<LayoutUnit>* snapOffsetInfo() const;
94
    WEBCORE_EXPORT const LayoutScrollSnapOffsetsInfo* snapOffsetInfo() const;
95
    virtual void updateSnapOffsets() { };
95
    virtual void updateSnapOffsets() { };
96
    void setScrollSnapOffsetInfo(const ScrollSnapOffsetsInfo<LayoutUnit>&);
96
    void setScrollSnapOffsetInfo(const LayoutScrollSnapOffsetsInfo&);
97
    void clearSnapOffsets();
97
    void clearSnapOffsets();
98
    unsigned currentHorizontalSnapPointIndex() const { return m_currentHorizontalSnapPointIndex; }
98
    unsigned currentHorizontalSnapPointIndex() const { return m_currentHorizontalSnapPointIndex; }
99
    void setCurrentHorizontalSnapPointIndex(unsigned index) { m_currentHorizontalSnapPointIndex = index; }
99
    void setCurrentHorizontalSnapPointIndex(unsigned index) { m_currentHorizontalSnapPointIndex = index; }
Lines 385-392 private: a/Source/WebCore/platform/ScrollableArea.h_sec2
385
    mutable std::unique_ptr<ScrollAnimator> m_scrollAnimator;
385
    mutable std::unique_ptr<ScrollAnimator> m_scrollAnimator;
386
386
387
#if ENABLE(CSS_SCROLL_SNAP)
387
#if ENABLE(CSS_SCROLL_SNAP)
388
    ScrollSnapOffsetsInfo<LayoutUnit>& ensureSnapOffsetsInfo();
388
    LayoutScrollSnapOffsetsInfo& ensureSnapOffsetsInfo();
389
    std::unique_ptr<ScrollSnapOffsetsInfo<LayoutUnit>> m_snapOffsetsInfo;
389
    std::unique_ptr<LayoutScrollSnapOffsetsInfo> m_snapOffsetsInfo;
390
    unsigned m_currentHorizontalSnapPointIndex { 0 };
390
    unsigned m_currentHorizontalSnapPointIndex { 0 };
391
    unsigned m_currentVerticalSnapPointIndex { 0 };
391
    unsigned m_currentVerticalSnapPointIndex { 0 };
392
#endif
392
#endif
- a/Source/WebCore/platform/mac/ScrollAnimatorMac.mm -1 / +1 lines
Lines 1278-1284 bool ScrollAnimatorMac::isPinnedForScrollDelta(const FloatSize& delta) const a/Source/WebCore/platform/mac/ScrollAnimatorMac.mm_sec1
1278
}
1278
}
1279
1279
1280
#if ENABLE(CSS_SCROLL_SNAP)
1280
#if ENABLE(CSS_SCROLL_SNAP)
1281
static bool gestureShouldBeginSnap(const PlatformWheelEvent& wheelEvent, ScrollEventAxis axis, const ScrollSnapOffsetsInfo<LayoutUnit>* offsetInfo)
1281
static bool gestureShouldBeginSnap(const PlatformWheelEvent& wheelEvent, ScrollEventAxis axis, const LayoutScrollSnapOffsetsInfo* offsetInfo)
1282
{
1282
{
1283
    if (!offsetInfo)
1283
    if (!offsetInfo)
1284
        return false;
1284
        return false;
- a/Source/WebKit/Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp -6 / +6 lines
Lines 98-106 template<> struct ArgumentCoder<RequestedScrollData> { a/Source/WebKit/Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp_sec1
98
    static WARN_UNUSED_RETURN bool decode(Decoder&, RequestedScrollData&);
98
    static WARN_UNUSED_RETURN bool decode(Decoder&, RequestedScrollData&);
99
};
99
};
100
100
101
template<> struct ArgumentCoder<ScrollSnapOffsetsInfo<float>> {
101
template<> struct ArgumentCoder<FloatScrollSnapOffsetsInfo> {
102
    static void encode(Encoder&, const ScrollSnapOffsetsInfo<float>&);
102
    static void encode(Encoder&, const FloatScrollSnapOffsetsInfo&);
103
    static WARN_UNUSED_RETURN bool decode(Decoder&, ScrollSnapOffsetsInfo<float>&);
103
    static WARN_UNUSED_RETURN bool decode(Decoder&, FloatScrollSnapOffsetsInfo&);
104
};
104
};
105
105
106
template<> struct ArgumentCoder<SnapOffset<float>> {
106
template<> struct ArgumentCoder<SnapOffset<float>> {
Lines 311-317 bool ArgumentCoder<ScrollingStateScrollingNode>::decode(Decoder& decoder, Scroll a/Source/WebKit/Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp_sec2
311
    SCROLLING_NODE_DECODE(ScrollingStateNode::Property::ScrollPosition, FloatPoint, setScrollPosition);
311
    SCROLLING_NODE_DECODE(ScrollingStateNode::Property::ScrollPosition, FloatPoint, setScrollPosition);
312
    SCROLLING_NODE_DECODE(ScrollingStateNode::Property::ScrollOrigin, IntPoint, setScrollOrigin);
312
    SCROLLING_NODE_DECODE(ScrollingStateNode::Property::ScrollOrigin, IntPoint, setScrollOrigin);
313
#if ENABLE(CSS_SCROLL_SNAP)
313
#if ENABLE(CSS_SCROLL_SNAP)
314
    SCROLLING_NODE_DECODE(ScrollingStateNode::Property::SnapOffsetsInfo, ScrollSnapOffsetsInfo<float>, setSnapOffsetsInfo);
314
    SCROLLING_NODE_DECODE(ScrollingStateNode::Property::SnapOffsetsInfo, FloatScrollSnapOffsetsInfo, setSnapOffsetsInfo);
315
    SCROLLING_NODE_DECODE(ScrollingStateNode::Property::CurrentHorizontalSnapOffsetIndex, unsigned, setCurrentHorizontalSnapPointIndex);
315
    SCROLLING_NODE_DECODE(ScrollingStateNode::Property::CurrentHorizontalSnapOffsetIndex, unsigned, setCurrentHorizontalSnapPointIndex);
316
    SCROLLING_NODE_DECODE(ScrollingStateNode::Property::CurrentVerticalSnapOffsetIndex, unsigned, setCurrentVerticalSnapPointIndex);
316
    SCROLLING_NODE_DECODE(ScrollingStateNode::Property::CurrentVerticalSnapOffsetIndex, unsigned, setCurrentVerticalSnapPointIndex);
317
#endif
317
#endif
Lines 544-550 bool ArgumentCoder<SnapOffset<float>>::decode(Decoder& decoder, SnapOffset<float a/Source/WebKit/Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp_sec3
544
}
544
}
545
545
546
546
547
void ArgumentCoder<ScrollSnapOffsetsInfo<float>>::encode(Encoder& encoder, const ScrollSnapOffsetsInfo<float>& info)
547
void ArgumentCoder<FloatScrollSnapOffsetsInfo>::encode(Encoder& encoder, const FloatScrollSnapOffsetsInfo& info)
548
{
548
{
549
    encoder << info.horizontalSnapOffsets;
549
    encoder << info.horizontalSnapOffsets;
550
    encoder << info.verticalSnapOffsets;
550
    encoder << info.verticalSnapOffsets;
Lines 552-558 void ArgumentCoder<ScrollSnapOffsetsInfo<float>>::encode(Encoder& encoder, const a/Source/WebKit/Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp_sec4
552
    encoder << info.verticalSnapOffsetRanges;
552
    encoder << info.verticalSnapOffsetRanges;
553
}
553
}
554
554
555
bool ArgumentCoder<ScrollSnapOffsetsInfo<float>>::decode(Decoder& decoder, ScrollSnapOffsetsInfo<float>& info)
555
bool ArgumentCoder<FloatScrollSnapOffsetsInfo>::decode(Decoder& decoder, FloatScrollSnapOffsetsInfo& info)
556
{
556
{
557
    if (!decoder.decode(info.horizontalSnapOffsets))
557
    if (!decoder.decode(info.horizontalSnapOffsets))
558
        return false;
558
        return false;

Return to Bug 223986