Diff
Modified: trunk/Source/WebCore/ChangeLog (285892 => 285893)
--- trunk/Source/WebCore/ChangeLog 2021-11-16 22:58:57 UTC (rev 285892)
+++ trunk/Source/WebCore/ChangeLog 2021-11-16 23:53:48 UTC (rev 285893)
@@ -1,3 +1,28 @@
+2021-11-16 Nikolaos Mouchtaris <nmouchta...@apple.com>
+
+ Add overscroll behavior to ScrollableAreaParameters
+ https://bugs.webkit.org/show_bug.cgi?id=233159
+
+ Reviewed by Simon Fraser.
+
+ Split patch by Cathie Chen and Frederic Wang. This patch lands the addition of
+ horizontalOverscrollBehavior and verticalOverscrollBehavior to ScrollableAreaParameters
+ to track value of over scroll behavior for particular scroll node. Patches for synchronous/
+ asynchronous scrolling on Mac and on iOS to come.
+
+ * page/scrolling/AsyncScrollingCoordinator.cpp:
+ (WebCore::AsyncScrollingCoordinator::setScrollingNodeScrollableAreaGeometry):
+ * page/scrolling/ScrollingCoordinatorTypes.h:
+ (WebCore::ScrollableAreaParameters::operator== const):
+ * page/scrolling/ScrollingTreeScrollingNode.h:
+ * platform/ScrollableArea.h:
+ (WebCore::ScrollableArea::horizontalOverscrollBehavior const):
+ (WebCore::ScrollableArea::verticalOverscrollBehavior const):
+ * rendering/RenderLayerScrollableArea.cpp:
+ (WebCore::RenderLayerScrollableArea::horizontalOverscrollBehavior const):
+ (WebCore::RenderLayerScrollableArea::verticalOverscrollBehavior const):
+ * rendering/RenderLayerScrollableArea.h:
+
2021-11-16 Rob Buis <rb...@igalia.com>
[css-contain] Support contain:paint
Modified: trunk/Source/WebCore/page/FrameView.cpp (285892 => 285893)
--- trunk/Source/WebCore/page/FrameView.cpp 2021-11-16 22:58:57 UTC (rev 285892)
+++ trunk/Source/WebCore/page/FrameView.cpp 2021-11-16 23:53:48 UTC (rev 285893)
@@ -5739,6 +5739,24 @@
verticalScrollbar()->setSteps(Scrollbar::pixelsPerLineStep(), pageStep);
}
}
+
+OverscrollBehavior FrameView::horizontalOverscrollBehavior() const
+{
+ auto* document = frame().document();
+ auto scrollingObject = document && document->documentElement() ? document->documentElement()->renderer() : nullptr;
+ if (scrollingObject && renderView() && renderView()->canBeScrolledAndHasScrollableArea())
+ return scrollingObject->style().overscrollBehaviorX();
+ return OverscrollBehavior::Auto;
+}
+
+OverscrollBehavior FrameView::verticalOverscrollBehavior() const
+{
+ auto* document = frame().document();
+ auto scrollingObject = document && document->documentElement() ? document->documentElement()->renderer() : nullptr;
+ if (scrollingObject && renderView() && renderView()->canBeScrolledAndHasScrollableArea())
+ return scrollingObject->style().overscrollBehaviorY();
+ return OverscrollBehavior::Auto;
+}
} // namespace WebCore
#undef PAGE_ID
Modified: trunk/Source/WebCore/page/FrameView.h (285892 => 285893)
--- trunk/Source/WebCore/page/FrameView.h 2021-11-16 22:58:57 UTC (rev 285892)
+++ trunk/Source/WebCore/page/FrameView.h 2021-11-16 23:53:48 UTC (rev 285893)
@@ -699,6 +699,9 @@
// ScrollView
void updateScrollbarSteps() override;
+
+ OverscrollBehavior horizontalOverscrollBehavior() const final;
+ OverscrollBehavior verticalOverscrollBehavior() const final;
private:
explicit FrameView(Frame&);
Modified: trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp (285892 => 285893)
--- trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp 2021-11-16 22:58:57 UTC (rev 285892)
+++ trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp 2021-11-16 23:53:48 UTC (rev 285893)
@@ -792,6 +792,8 @@
scrollParameters.verticalScrollElasticity = scrollableArea.verticalScrollElasticity();
scrollParameters.allowsHorizontalScrolling = scrollableArea.allowsHorizontalScrolling();
scrollParameters.allowsVerticalScrolling = scrollableArea.allowsVerticalScrolling();
+ scrollParameters.horizontalOverscrollBehavior = scrollableArea.horizontalOverscrollBehavior();
+ scrollParameters.verticalOverscrollBehavior = scrollableArea.verticalOverscrollBehavior();
scrollParameters.horizontalScrollbarMode = scrollableArea.horizontalScrollbarMode();
scrollParameters.verticalScrollbarMode = scrollableArea.verticalScrollbarMode();
scrollParameters.horizontalScrollbarHiddenByStyle = scrollableArea.horizontalScrollbarHiddenByStyle();
Modified: trunk/Source/WebCore/page/scrolling/ScrollingCoordinatorTypes.h (285892 => 285893)
--- trunk/Source/WebCore/page/scrolling/ScrollingCoordinatorTypes.h 2021-11-16 22:58:57 UTC (rev 285892)
+++ trunk/Source/WebCore/page/scrolling/ScrollingCoordinatorTypes.h 2021-11-16 23:53:48 UTC (rev 285893)
@@ -76,6 +76,9 @@
ScrollbarMode horizontalScrollbarMode { ScrollbarMode::Auto };
ScrollbarMode verticalScrollbarMode { ScrollbarMode::Auto };
+
+ OverscrollBehavior horizontalOverscrollBehavior { OverscrollBehavior::Auto };
+ OverscrollBehavior verticalOverscrollBehavior { OverscrollBehavior::Auto };
bool allowsHorizontalScrolling { false };
bool allowsVerticalScrolling { false };
@@ -91,6 +94,8 @@
&& verticalScrollElasticity == other.verticalScrollElasticity
&& horizontalScrollbarMode == other.horizontalScrollbarMode
&& verticalScrollbarMode == other.verticalScrollbarMode
+ && horizontalOverscrollBehavior == other.horizontalOverscrollBehavior
+ && verticalOverscrollBehavior == other.verticalOverscrollBehavior
&& allowsHorizontalScrolling == other.allowsHorizontalScrolling
&& allowsVerticalScrolling == other.allowsVerticalScrolling
&& horizontalScrollbarHiddenByStyle == other.horizontalScrollbarHiddenByStyle
Modified: trunk/Source/WebCore/platform/ScrollableArea.h (285892 => 285893)
--- trunk/Source/WebCore/platform/ScrollableArea.h 2021-11-16 22:58:57 UTC (rev 285892)
+++ trunk/Source/WebCore/platform/ScrollableArea.h 2021-11-16 23:53:48 UTC (rev 285893)
@@ -127,6 +127,9 @@
virtual bool horizontalScrollbarHiddenByStyle() const { return false; }
virtual bool verticalScrollbarHiddenByStyle() const { return false; }
+
+ virtual OverscrollBehavior horizontalOverscrollBehavior() const { return OverscrollBehavior::Auto; }
+ virtual OverscrollBehavior verticalOverscrollBehavior() const { return OverscrollBehavior::Auto; }
bool allowsHorizontalScrolling() const;
bool allowsVerticalScrolling() const;
Modified: trunk/Source/WebCore/rendering/RenderLayerScrollableArea.cpp (285892 => 285893)
--- trunk/Source/WebCore/rendering/RenderLayerScrollableArea.cpp 2021-11-16 22:58:57 UTC (rev 285892)
+++ trunk/Source/WebCore/rendering/RenderLayerScrollableArea.cpp 2021-11-16 23:53:48 UTC (rev 285893)
@@ -947,6 +947,20 @@
return m_hBar->height();
}
+OverscrollBehavior RenderLayerScrollableArea::horizontalOverscrollBehavior() const
+{
+ if (m_layer.renderBox() && m_layer.renderBox()->canBeScrolledAndHasScrollableArea())
+ return m_layer.renderer().style().overscrollBehaviorX();
+ return OverscrollBehavior::Auto;
+}
+
+OverscrollBehavior RenderLayerScrollableArea::verticalOverscrollBehavior() const
+{
+ if (m_layer.renderBox() && m_layer.renderBox()->canBeScrolledAndHasScrollableArea())
+ return m_layer.renderer().style().overscrollBehaviorY();
+ return OverscrollBehavior::Auto;
+}
+
bool RenderLayerScrollableArea::hasOverflowControls() const
{
return m_hBar || m_vBar || m_scrollCorner || m_layer.renderer().style().resize() != Resize::None;
Modified: trunk/Source/WebCore/rendering/RenderLayerScrollableArea.h (285892 => 285893)
--- trunk/Source/WebCore/rendering/RenderLayerScrollableArea.h 2021-11-16 22:58:57 UTC (rev 285892)
+++ trunk/Source/WebCore/rendering/RenderLayerScrollableArea.h 2021-11-16 23:53:48 UTC (rev 285893)
@@ -103,6 +103,9 @@
bool hasVerticalScrollbar() const { return verticalScrollbar(); }
void setHasHorizontalScrollbar(bool);
void setHasVerticalScrollbar(bool);
+
+ OverscrollBehavior horizontalOverscrollBehavior() const final;
+ OverscrollBehavior verticalOverscrollBehavior() const final;
bool requiresScrollPositionReconciliation() const { return m_requiresScrollPositionReconciliation; }
void setRequiresScrollPositionReconciliation(bool requiresReconciliation = true) { m_requiresScrollPositionReconciliation = requiresReconciliation; }
Modified: trunk/Source/WebKit/ChangeLog (285892 => 285893)
--- trunk/Source/WebKit/ChangeLog 2021-11-16 22:58:57 UTC (rev 285892)
+++ trunk/Source/WebKit/ChangeLog 2021-11-16 23:53:48 UTC (rev 285893)
@@ -1,3 +1,15 @@
+2021-11-16 Nikolaos Mouchtaris <nmouchta...@apple.com>
+
+ Add overscroll behavior to ScrollableAreaParameters
+ https://bugs.webkit.org/show_bug.cgi?id=233159
+
+ Reviewed by Simon Fraser.
+
+ * Shared/WebCoreArgumentCoders.cpp:
+ (IPC::ArgumentCoder<ScrollableAreaParameters>::encode):
+ (IPC::ArgumentCoder<ScrollableAreaParameters>::decode):
+ * Shared/WebCoreArgumentCoders.h:
+
2021-11-16 Per Arne Vollan <pvol...@apple.com>
Adjust graphics related message filter
Modified: trunk/Source/WebKit/Shared/WebCoreArgumentCoders.cpp (285892 => 285893)
--- trunk/Source/WebKit/Shared/WebCoreArgumentCoders.cpp 2021-11-16 22:58:57 UTC (rev 285892)
+++ trunk/Source/WebKit/Shared/WebCoreArgumentCoders.cpp 2021-11-16 23:53:48 UTC (rev 285893)
@@ -2021,6 +2021,9 @@
encoder << parameters.horizontalScrollbarMode;
encoder << parameters.verticalScrollbarMode;
+
+ encoder << parameters.horizontalOverscrollBehavior;
+ encoder << parameters.verticalOverscrollBehavior;
encoder << parameters.allowsHorizontalScrolling;
encoder << parameters.allowsVerticalScrolling;
@@ -2042,6 +2045,11 @@
return false;
if (!decoder.decode(params.verticalScrollbarMode))
return false;
+
+ if (!decoder.decode(params.horizontalOverscrollBehavior))
+ return false;
+ if (!decoder.decode(params.verticalOverscrollBehavior))
+ return false;
if (!decoder.decode(params.allowsHorizontalScrolling))
return false;
Modified: trunk/Source/WebKit/Shared/WebCoreArgumentCoders.h (285892 => 285893)
--- trunk/Source/WebKit/Shared/WebCoreArgumentCoders.h 2021-11-16 22:58:57 UTC (rev 285892)
+++ trunk/Source/WebKit/Shared/WebCoreArgumentCoders.h 2021-11-16 23:53:48 UTC (rev 285893)
@@ -52,6 +52,7 @@
#include <WebCore/RealtimeMediaSource.h>
#include <WebCore/RenderingMode.h>
#include <WebCore/ScrollSnapOffsetsInfo.h>
+#include <WebCore/ScrollTypes.h>
#include <WebCore/SerializedPlatformDataCueValue.h>
#include <WebCore/ServiceWorkerTypes.h>
#include <WebCore/StoredCredentialsPolicy.h>
@@ -1027,4 +1028,13 @@
>;
};
+template<> struct EnumTraits<WebCore::OverscrollBehavior> {
+ using values = EnumValues<
+ WebCore::OverscrollBehavior,
+ WebCore::OverscrollBehavior::Auto,
+ WebCore::OverscrollBehavior::Contain,
+ WebCore::OverscrollBehavior::None
+ >;
+};
+
} // namespace WTF