Diff
Modified: trunk/Source/WebCore/ChangeLog (285356 => 285357)
--- trunk/Source/WebCore/ChangeLog 2021-11-05 22:42:12 UTC (rev 285356)
+++ trunk/Source/WebCore/ChangeLog 2021-11-05 23:06:50 UTC (rev 285357)
@@ -1,3 +1,56 @@
+2021-11-05 Nikolaos Mouchtaris <nmouchta...@apple.com>
+
+ Make scroll bar mode an enum class
+ https://bugs.webkit.org/show_bug.cgi?id=232651
+
+ Reviewed by Simon Fraser.
+
+ * html/HTMLFrameElementBase.cpp:
+ (WebCore::HTMLFrameElementBase::scrollingMode const):
+ * html/HTMLFrameOwnerElement.h:
+ (WebCore::HTMLFrameOwnerElement::scrollingMode const):
+ * page/Frame.cpp:
+ (WebCore::Frame::createView):
+ * page/Frame.h:
+ * page/FrameView.cpp:
+ (WebCore::FrameView::resetScrollbars):
+ (WebCore::FrameView::init):
+ (WebCore::FrameView::updateCanHaveScrollbars):
+ (WebCore::FrameView::applyOverflowToViewport):
+ (WebCore::FrameView::calculateScrollbarModesForLayout):
+ (WebCore::FrameView::adjustScrollbarsForLayout):
+ (WebCore::FrameView::performFixedWidthAutoSize):
+ (WebCore::FrameView::performSizeToContentAutoSize):
+ (WebCore::FrameView::isScrollable):
+ (WebCore::FrameView::enableAutoSizeMode):
+ * page/SpatialNavigation.cpp:
+ (WebCore::canScrollInDirection):
+ * page/scrolling/ScrollingCoordinatorTypes.h:
+ * page/scrolling/ScrollingTreeScrollingNode.h:
+ * platform/ScrollTypes.cpp:
+ (WebCore::operator<<):
+ * platform/ScrollTypes.h:
+ * platform/ScrollView.cpp:
+ (WebCore::ScrollView::setCanHaveScrollbars):
+ (WebCore::ScrollView::updateScrollbars):
+ (WebCore::ScrollView::platformScrollbarModes const):
+ * platform/ScrollView.h:
+ * platform/ScrollableArea.h:
+ (WebCore::ScrollableArea::horizontalScrollbarMode const):
+ (WebCore::ScrollableArea::verticalScrollbarMode const):
+ (WebCore::ScrollableArea::canHaveScrollbars const):
+ * platform/ios/wak/WAKScrollView.mm:
+ (-[WAKScrollView horizontalScrollingMode]):
+ (-[WAKScrollView verticalScrollingMode]):
+ * rendering/RenderFrameBase.cpp:
+ (WebCore::RenderFrameBase::performLayoutWithFlattening):
+ * rendering/RenderIFrame.cpp:
+ (WebCore::RenderIFrame::flattenFrame const):
+ * rendering/RenderLayer.cpp:
+ (WebCore::frameElementAndViewPermitScroll):
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::computePageTiledBackingCoverage):
+
2021-11-05 Alex Christensen <achristen...@webkit.org>
Restructure WKContentRuleList Action storage during compilation and interpretation
Modified: trunk/Source/WebCore/html/HTMLFrameElementBase.cpp (285356 => 285357)
--- trunk/Source/WebCore/html/HTMLFrameElementBase.cpp 2021-11-05 22:42:12 UTC (rev 285356)
+++ trunk/Source/WebCore/html/HTMLFrameElementBase.cpp 2021-11-05 23:06:50 UTC (rev 285357)
@@ -231,7 +231,7 @@
return equalLettersIgnoringASCIICase(scrollingAttribute, "no")
|| equalLettersIgnoringASCIICase(scrollingAttribute, "noscroll")
|| equalLettersIgnoringASCIICase(scrollingAttribute, "off")
- ? ScrollbarAlwaysOff : ScrollbarAuto;
+ ? ScrollbarMode::AlwaysOff : ScrollbarMode::Auto;
}
} // namespace WebCore
Modified: trunk/Source/WebCore/html/HTMLFrameOwnerElement.h (285356 => 285357)
--- trunk/Source/WebCore/html/HTMLFrameOwnerElement.h 2021-11-05 22:42:12 UTC (rev 285356)
+++ trunk/Source/WebCore/html/HTMLFrameOwnerElement.h 2021-11-05 23:06:50 UTC (rev 285357)
@@ -51,7 +51,7 @@
ExceptionOr<Document&> getSVGDocument() const;
- virtual ScrollbarMode scrollingMode() const { return ScrollbarAuto; }
+ virtual ScrollbarMode scrollingMode() const { return ScrollbarMode::Auto; }
SandboxFlags sandboxFlags() const { return m_sandboxFlags; }
Modified: trunk/Source/WebCore/page/Frame.cpp (285356 => 285357)
--- trunk/Source/WebCore/page/Frame.cpp 2021-11-05 22:42:12 UTC (rev 285356)
+++ trunk/Source/WebCore/page/Frame.cpp 2021-11-05 23:06:50 UTC (rev 285357)
@@ -918,7 +918,7 @@
ownerRenderer()->setWidget(frameView);
if (HTMLFrameOwnerElement* owner = ownerElement())
- view()->setCanHaveScrollbars(owner->scrollingMode() != ScrollbarAlwaysOff);
+ view()->setCanHaveScrollbars(owner->scrollingMode() != ScrollbarMode::AlwaysOff);
}
DOMWindow* Frame::window() const
Modified: trunk/Source/WebCore/page/Frame.h (285356 => 285357)
--- trunk/Source/WebCore/page/Frame.h 2021-11-05 22:42:12 UTC (rev 285356)
+++ trunk/Source/WebCore/page/Frame.h 2021-11-05 23:06:50 UTC (rev 285357)
@@ -128,8 +128,8 @@
WEBCORE_EXPORT void setView(RefPtr<FrameView>&&);
WEBCORE_EXPORT void createView(const IntSize&, const std::optional<Color>& backgroundColor,
const IntSize& fixedLayoutSize, const IntRect& fixedVisibleContentRect,
- bool useFixedLayout = false, ScrollbarMode = ScrollbarAuto, bool horizontalLock = false,
- ScrollbarMode = ScrollbarAuto, bool verticalLock = false);
+ bool useFixedLayout = false, ScrollbarMode = ScrollbarMode::Auto, bool horizontalLock = false,
+ ScrollbarMode = ScrollbarMode::Auto, bool verticalLock = false);
WEBCORE_EXPORT ~Frame();
Modified: trunk/Source/WebCore/page/FrameView.cpp (285356 => 285357)
--- trunk/Source/WebCore/page/FrameView.cpp 2021-11-05 22:42:12 UTC (rev 285356)
+++ trunk/Source/WebCore/page/FrameView.cpp 2021-11-05 23:06:50 UTC (rev 285357)
@@ -297,9 +297,9 @@
// Reset the document's scrollbars back to our defaults before we yield the floor.
setScrollbarsSuppressed(true);
if (m_canHaveScrollbars)
- setScrollbarModes(ScrollbarAuto, ScrollbarAuto);
+ setScrollbarModes(ScrollbarMode::Auto, ScrollbarMode::Auto);
else
- setScrollbarModes(ScrollbarAlwaysOff, ScrollbarAlwaysOff);
+ setScrollbarModes(ScrollbarMode::AlwaysOff, ScrollbarMode::AlwaysOff);
setScrollbarsSuppressed(false);
}
@@ -322,7 +322,7 @@
// Propagate the scrolling mode to the view.
auto* ownerElement = frame().ownerElement();
- if (is<HTMLFrameElementBase>(ownerElement) && downcast<HTMLFrameElementBase>(*ownerElement).scrollingMode() == ScrollbarAlwaysOff)
+ if (is<HTMLFrameElementBase>(ownerElement) && downcast<HTMLFrameElementBase>(*ownerElement).scrollingMode() == ScrollbarMode::AlwaysOff)
setCanHaveScrollbars(false);
Page* page = frame().page();
@@ -521,7 +521,7 @@
ScrollbarMode hMode;
ScrollbarMode vMode;
scrollbarModes(hMode, vMode);
- if (hMode == ScrollbarAlwaysOff && vMode == ScrollbarAlwaysOff)
+ if (hMode == ScrollbarMode::AlwaysOff && vMode == ScrollbarMode::AlwaysOff)
setCanHaveScrollbars(false);
else
setCanHaveScrollbars(true);
@@ -659,15 +659,15 @@
case Overflow::Hidden:
case Overflow::Clip:
if (overrideHidden)
- hMode = ScrollbarAuto;
+ hMode = ScrollbarMode::Auto;
else
- hMode = ScrollbarAlwaysOff;
+ hMode = ScrollbarMode::AlwaysOff;
break;
case Overflow::Scroll:
- hMode = ScrollbarAlwaysOn;
+ hMode = ScrollbarMode::AlwaysOn;
break;
case Overflow::Auto:
- hMode = ScrollbarAuto;
+ hMode = ScrollbarMode::Auto;
break;
default:
// Don't set it at all.
@@ -678,15 +678,15 @@
case Overflow::Hidden:
case Overflow::Clip:
if (overrideHidden)
- vMode = ScrollbarAuto;
+ vMode = ScrollbarMode::Auto;
else
- vMode = ScrollbarAlwaysOff;
+ vMode = ScrollbarMode::AlwaysOff;
break;
case Overflow::Scroll:
- vMode = ScrollbarAlwaysOn;
+ vMode = ScrollbarMode::AlwaysOn;
break;
case Overflow::Auto:
- vMode = ScrollbarAuto;
+ vMode = ScrollbarMode::Auto;
break;
default:
// Don't set it at all. Values of Overflow::PagedX and Overflow::PagedY are handled by applyPaginationToViewPort().
@@ -731,18 +731,18 @@
m_viewportRendererType = ViewportRendererType::None;
const HTMLFrameOwnerElement* owner = frame().ownerElement();
- if (owner && (owner->scrollingMode() == ScrollbarAlwaysOff)) {
- hMode = ScrollbarAlwaysOff;
- vMode = ScrollbarAlwaysOff;
+ if (owner && (owner->scrollingMode() == ScrollbarMode::AlwaysOff)) {
+ hMode = ScrollbarMode::AlwaysOff;
+ vMode = ScrollbarMode::AlwaysOff;
return;
}
if (m_canHaveScrollbars || strategy == RulesFromWebContentOnly) {
- hMode = ScrollbarAuto;
- vMode = ScrollbarAuto;
+ hMode = ScrollbarMode::Auto;
+ vMode = ScrollbarMode::Auto;
} else {
- hMode = ScrollbarAlwaysOff;
- vMode = ScrollbarAlwaysOff;
+ hMode = ScrollbarMode::AlwaysOff;
+ vMode = ScrollbarMode::AlwaysOff;
}
if (layoutContext().subtreeLayoutRoot())
@@ -767,8 +767,8 @@
}
if (is<HTMLFrameSetElement>(*bodyOrFrameset) && !frameFlatteningEnabled()) {
- vMode = ScrollbarAlwaysOff;
- hMode = ScrollbarAlwaysOff;
+ vMode = ScrollbarMode::AlwaysOff;
+ hMode = ScrollbarMode::AlwaysOff;
return;
}
@@ -1254,11 +1254,11 @@
if (isFirstLayout && !layoutContext().isLayoutNested()) {
setScrollbarsSuppressed(true);
// Set the initial vMode to AlwaysOn if we're auto.
- if (vMode == ScrollbarAuto)
- setVerticalScrollbarMode(ScrollbarAlwaysOn); // This causes a vertical scrollbar to appear.
+ if (vMode == ScrollbarMode::Auto)
+ setVerticalScrollbarMode(ScrollbarMode::AlwaysOn); // This causes a vertical scrollbar to appear.
// Set the initial hMode to AlwaysOff if we're auto.
- if (hMode == ScrollbarAuto)
- setHorizontalScrollbarMode(ScrollbarAlwaysOff); // This causes a horizontal scrollbar to disappear.
+ if (hMode == ScrollbarMode::Auto)
+ setHorizontalScrollbarMode(ScrollbarMode::AlwaysOff); // This causes a horizontal scrollbar to disappear.
ASSERT(frame().page());
if (frame().page()->isMonitoringWheelEvents())
scrollAnimator().setWheelEventTestMonitor(frame().page()->wheelEventTestMonitor());
@@ -3521,8 +3521,8 @@
auto* renderView = document->renderView();
auto* firstChild = renderView->firstChild();
- ScrollbarMode horizonalScrollbarMode = ScrollbarAlwaysOff;
- ScrollbarMode verticalScrollbarMode = ScrollbarAlwaysOff;
+ auto horizonalScrollbarMode = ScrollbarMode::AlwaysOff;
+ auto verticalScrollbarMode = ScrollbarMode::AlwaysOff;
setVerticalScrollbarLock(false);
setHorizontalScrollbarLock(false);
setScrollbarModes(horizonalScrollbarMode, verticalScrollbarMode, true, true);
@@ -3605,15 +3605,15 @@
newSize = newSize.expandedTo(minAutoSize);
// Bound the dimensions by the max bounds and determine what scrollbars to show.
- ScrollbarMode horizonalScrollbarMode = ScrollbarAlwaysOff;
+ ScrollbarMode horizonalScrollbarMode = ScrollbarMode::AlwaysOff;
if (newSize.width() > m_autoSizeConstraint.width()) {
newSize.setWidth(m_autoSizeConstraint.width());
- horizonalScrollbarMode = ScrollbarAlwaysOn;
+ horizonalScrollbarMode = ScrollbarMode::AlwaysOn;
}
- ScrollbarMode verticalScrollbarMode = ScrollbarAlwaysOff;
+ ScrollbarMode verticalScrollbarMode = ScrollbarMode::AlwaysOff;
if (newSize.height() > m_autoSizeConstraint.height()) {
newSize.setHeight(m_autoSizeConstraint.height());
- verticalScrollbarMode = ScrollbarAlwaysOn;
+ verticalScrollbarMode = ScrollbarMode::AlwaysOn;
}
if (newSize == size)
@@ -3950,7 +3950,7 @@
ScrollbarMode horizontalMode;
ScrollbarMode verticalMode;
calculateScrollbarModesForLayout(horizontalMode, verticalMode, RulesFromWebContentOnly);
- if (horizontalMode == ScrollbarAlwaysOff && verticalMode == ScrollbarAlwaysOff)
+ if (horizontalMode == ScrollbarMode::AlwaysOff && verticalMode == ScrollbarMode::AlwaysOff)
return false;
return true;
@@ -4722,7 +4722,7 @@
// Since autosize mode forces the scrollbar mode, change them to being auto.
setVerticalScrollbarLock(false);
setHorizontalScrollbarLock(false);
- setScrollbarModes(ScrollbarAuto, ScrollbarAuto);
+ setScrollbarModes(ScrollbarMode::Auto, ScrollbarMode::Auto);
}
void FrameView::forceLayout(bool allowSubtreeLayout)
Modified: trunk/Source/WebCore/page/SpatialNavigation.cpp (285356 => 285357)
--- trunk/Source/WebCore/page/SpatialNavigation.cpp 2021-11-05 22:42:12 UTC (rev 285356)
+++ trunk/Source/WebCore/page/SpatialNavigation.cpp 2021-11-05 23:06:50 UTC (rev 285357)
@@ -476,9 +476,9 @@
ScrollbarMode verticalMode;
ScrollbarMode horizontalMode;
frame->view()->calculateScrollbarModesForLayout(horizontalMode, verticalMode);
- if ((direction == FocusDirection::Left || direction == FocusDirection::Right) && ScrollbarAlwaysOff == horizontalMode)
+ if ((direction == FocusDirection::Left || direction == FocusDirection::Right) && ScrollbarMode::AlwaysOff == horizontalMode)
return false;
- if ((direction == FocusDirection::Up || direction == FocusDirection::Down) && ScrollbarAlwaysOff == verticalMode)
+ if ((direction == FocusDirection::Up || direction == FocusDirection::Down) && ScrollbarMode::AlwaysOff == verticalMode)
return false;
LayoutSize size = frame->view()->totalContentsSize();
LayoutPoint scrollPosition = frame->view()->scrollPosition();
Modified: trunk/Source/WebCore/page/scrolling/ScrollingCoordinatorTypes.h (285356 => 285357)
--- trunk/Source/WebCore/page/scrolling/ScrollingCoordinatorTypes.h 2021-11-05 22:42:12 UTC (rev 285356)
+++ trunk/Source/WebCore/page/scrolling/ScrollingCoordinatorTypes.h 2021-11-05 23:06:50 UTC (rev 285357)
@@ -74,8 +74,8 @@
ScrollElasticity horizontalScrollElasticity { ScrollElasticity::None };
ScrollElasticity verticalScrollElasticity { ScrollElasticity::None };
- ScrollbarMode horizontalScrollbarMode { ScrollbarAuto };
- ScrollbarMode verticalScrollbarMode { ScrollbarAuto };
+ ScrollbarMode horizontalScrollbarMode { ScrollbarMode::Auto };
+ ScrollbarMode verticalScrollbarMode { ScrollbarMode::Auto };
bool allowsHorizontalScrolling { false };
bool allowsVerticalScrolling { false };
Modified: trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h (285356 => 285357)
--- trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h 2021-11-05 22:42:12 UTC (rev 285356)
+++ trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h 2021-11-05 23:06:50 UTC (rev 285357)
@@ -96,9 +96,9 @@
bool horizontalScrollbarHiddenByStyle() const { return m_scrollableAreaParameters.horizontalScrollbarHiddenByStyle; }
bool verticalScrollbarHiddenByStyle() const { return m_scrollableAreaParameters.verticalScrollbarHiddenByStyle; }
- bool canHaveHorizontalScrollbar() const { return m_scrollableAreaParameters.horizontalScrollbarMode != ScrollbarAlwaysOff; }
- bool canHaveVerticalScrollbar() const { return m_scrollableAreaParameters.verticalScrollbarMode != ScrollbarAlwaysOff; }
- bool canHaveScrollbars() const { return m_scrollableAreaParameters.horizontalScrollbarMode != ScrollbarAlwaysOff || m_scrollableAreaParameters.verticalScrollbarMode != ScrollbarAlwaysOff; }
+ bool canHaveHorizontalScrollbar() const { return m_scrollableAreaParameters.horizontalScrollbarMode != ScrollbarMode::AlwaysOff; }
+ bool canHaveVerticalScrollbar() const { return m_scrollableAreaParameters.verticalScrollbarMode != ScrollbarMode::AlwaysOff; }
+ bool canHaveScrollbars() const { return m_scrollableAreaParameters.horizontalScrollbarMode != ScrollbarMode::AlwaysOff || m_scrollableAreaParameters.verticalScrollbarMode != ScrollbarMode::AlwaysOff; }
const FloatScrollSnapOffsetsInfo& snapOffsetsInfo() const;
std::optional<unsigned> currentHorizontalSnapPointIndex() const;
Modified: trunk/Source/WebCore/platform/ScrollTypes.cpp (285356 => 285357)
--- trunk/Source/WebCore/platform/ScrollTypes.cpp 2021-11-05 22:42:12 UTC (rev 285356)
+++ trunk/Source/WebCore/platform/ScrollTypes.cpp 2021-11-05 23:06:50 UTC (rev 285357)
@@ -78,4 +78,20 @@
return ts;
}
+TextStream& operator<<(TextStream& ts, ScrollbarMode behavior)
+{
+ switch (behavior) {
+ case ScrollbarMode::Auto:
+ ts << 0;
+ break;
+ case ScrollbarMode::AlwaysOff:
+ ts << 1;
+ break;
+ case ScrollbarMode::AlwaysOn:
+ ts << 2;
+ break;
+ }
+ return ts;
+}
+
} // namespace WebCore
Modified: trunk/Source/WebCore/platform/ScrollTypes.h (285356 => 285357)
--- trunk/Source/WebCore/platform/ScrollTypes.h 2021-11-05 22:42:12 UTC (rev 285356)
+++ trunk/Source/WebCore/platform/ScrollTypes.h 2021-11-05 23:06:50 UTC (rev 285357)
@@ -148,10 +148,10 @@
Vertical
};
-enum ScrollbarMode : uint8_t {
- ScrollbarAuto,
- ScrollbarAlwaysOff,
- ScrollbarAlwaysOn
+enum class ScrollbarMode : uint8_t {
+ Auto,
+ AlwaysOff,
+ AlwaysOn
};
enum class ScrollbarControlSize : uint8_t {
@@ -261,6 +261,7 @@
WEBCORE_EXPORT WTF::TextStream& operator<<(WTF::TextStream&, ScrollClamping);
WEBCORE_EXPORT WTF::TextStream& operator<<(WTF::TextStream&, ScrollBehaviorForFixedElements);
WEBCORE_EXPORT WTF::TextStream& operator<<(WTF::TextStream&, ScrollElasticity);
+WEBCORE_EXPORT WTF::TextStream& operator<<(WTF::TextStream&, ScrollbarMode);
struct ScrollPositionChangeOptions {
ScrollType type;
@@ -304,9 +305,9 @@
template<> struct EnumTraits<WebCore::ScrollbarMode> {
using values = EnumValues<
WebCore::ScrollbarMode,
- WebCore::ScrollbarMode::ScrollbarAuto,
- WebCore::ScrollbarMode::ScrollbarAlwaysOff,
- WebCore::ScrollbarMode::ScrollbarAlwaysOn
+ WebCore::ScrollbarMode::Auto,
+ WebCore::ScrollbarMode::AlwaysOff,
+ WebCore::ScrollbarMode::AlwaysOn
>;
};
Modified: trunk/Source/WebCore/platform/ScrollView.cpp (285356 => 285357)
--- trunk/Source/WebCore/platform/ScrollView.cpp 2021-11-05 22:42:12 UTC (rev 285356)
+++ trunk/Source/WebCore/platform/ScrollView.cpp 2021-11-05 23:06:50 UTC (rev 285357)
@@ -154,15 +154,15 @@
scrollbarModes(newHorizontalMode, newVerticalMode);
- if (canScroll && newVerticalMode == ScrollbarAlwaysOff)
- newVerticalMode = ScrollbarAuto;
+ if (canScroll && newVerticalMode == ScrollbarMode::AlwaysOff)
+ newVerticalMode = ScrollbarMode::Auto;
else if (!canScroll)
- newVerticalMode = ScrollbarAlwaysOff;
+ newVerticalMode = ScrollbarMode::AlwaysOff;
- if (canScroll && newHorizontalMode == ScrollbarAlwaysOff)
- newHorizontalMode = ScrollbarAuto;
+ if (canScroll && newHorizontalMode == ScrollbarMode::AlwaysOff)
+ newHorizontalMode = ScrollbarMode::Auto;
else if (!canScroll)
- newHorizontalMode = ScrollbarAlwaysOff;
+ newHorizontalMode = ScrollbarMode::AlwaysOff;
setScrollbarModes(newHorizontalMode, newVerticalMode);
}
@@ -634,14 +634,14 @@
ScrollbarMode hScroll = m_horizontalScrollbarMode;
ScrollbarMode vScroll = m_verticalScrollbarMode;
- if (hScroll != ScrollbarAuto)
- newHasHorizontalScrollbar = (hScroll == ScrollbarAlwaysOn);
- if (vScroll != ScrollbarAuto)
- newHasVerticalScrollbar = (vScroll == ScrollbarAlwaysOn);
+ if (hScroll != ScrollbarMode::Auto)
+ newHasHorizontalScrollbar = (hScroll == ScrollbarMode::AlwaysOn);
+ if (vScroll != ScrollbarMode::Auto)
+ newHasVerticalScrollbar = (vScroll == ScrollbarMode::AlwaysOn);
bool scrollbarAddedOrRemoved = false;
- if (m_scrollbarsSuppressed || (hScroll != ScrollbarAuto && vScroll != ScrollbarAuto)) {
+ if (m_scrollbarsSuppressed || (hScroll != ScrollbarMode::Auto && vScroll != ScrollbarMode::Auto)) {
if (hasHorizontalScrollbar != newHasHorizontalScrollbar && (hasHorizontalScrollbar || !avoidScrollbarCreation())) {
if (setHasHorizontalScrollbar(newHasHorizontalScrollbar))
scrollbarAddedOrRemoved = true;
@@ -657,9 +657,9 @@
IntSize docSize = totalContentsSize();
IntSize fullVisibleSize = unobscuredContentRectIncludingScrollbars().size();
- if (hScroll == ScrollbarAuto)
+ if (hScroll == ScrollbarMode::Auto)
newHasHorizontalScrollbar = docSize.width() > visibleWidth();
- if (vScroll == ScrollbarAuto)
+ if (vScroll == ScrollbarMode::Auto)
newHasVerticalScrollbar = docSize.height() > visibleHeight();
bool needAnotherPass = false;
@@ -667,16 +667,16 @@
// If we ever turn one scrollbar off, do not turn the other one on. Never ever
// try to both gain/lose a scrollbar in the same pass.
if (!m_updateScrollbarsPass && docSize.width() <= fullVisibleSize.width() && docSize.height() <= fullVisibleSize.height()) {
- if (hScroll == ScrollbarAuto)
+ if (hScroll == ScrollbarMode::Auto)
newHasHorizontalScrollbar = false;
- if (vScroll == ScrollbarAuto)
+ if (vScroll == ScrollbarMode::Auto)
newHasVerticalScrollbar = false;
}
- if (!newHasHorizontalScrollbar && hasHorizontalScrollbar && vScroll != ScrollbarAlwaysOn && !hasVerticalScrollbar) {
+ if (!newHasHorizontalScrollbar && hasHorizontalScrollbar && vScroll != ScrollbarMode::AlwaysOn && !hasVerticalScrollbar) {
newHasVerticalScrollbar = false;
needAnotherPass = true;
}
- if (!newHasVerticalScrollbar && hasVerticalScrollbar && hScroll != ScrollbarAlwaysOn && !hasHorizontalScrollbar) {
+ if (!newHasVerticalScrollbar && hasVerticalScrollbar && hScroll != ScrollbarMode::AlwaysOn && !hasHorizontalScrollbar) {
newHasHorizontalScrollbar = false;
needAnotherPass = true;
}
@@ -1619,8 +1619,8 @@
void ScrollView::platformScrollbarModes(ScrollbarMode& horizontal, ScrollbarMode& vertical) const
{
- horizontal = ScrollbarAuto;
- vertical = ScrollbarAuto;
+ horizontal = ScrollbarMode::Auto;
+ vertical = ScrollbarMode::Auto;
}
void ScrollView::platformSetCanBlitOnScroll(bool)
Modified: trunk/Source/WebCore/platform/ScrollView.h (285356 => 285357)
--- trunk/Source/WebCore/platform/ScrollView.h 2021-11-05 22:42:12 UTC (rev 285356)
+++ trunk/Source/WebCore/platform/ScrollView.h 2021-11-05 23:06:50 UTC (rev 285357)
@@ -534,8 +534,8 @@
RefPtr<Scrollbar> m_horizontalScrollbar;
RefPtr<Scrollbar> m_verticalScrollbar;
- ScrollbarMode m_horizontalScrollbarMode { ScrollbarAuto };
- ScrollbarMode m_verticalScrollbarMode { ScrollbarAuto };
+ ScrollbarMode m_horizontalScrollbarMode { ScrollbarMode::Auto };
+ ScrollbarMode m_verticalScrollbarMode { ScrollbarMode::Auto };
// FIXME: More things will move into here.
Modified: trunk/Source/WebCore/platform/ScrollableArea.h (285356 => 285357)
--- trunk/Source/WebCore/platform/ScrollableArea.h 2021-11-05 22:42:12 UTC (rev 285356)
+++ trunk/Source/WebCore/platform/ScrollableArea.h 2021-11-05 23:06:50 UTC (rev 285357)
@@ -121,9 +121,9 @@
void setHorizontalScrollElasticity(ScrollElasticity scrollElasticity) { m_horizontalScrollElasticity = scrollElasticity; }
ScrollElasticity horizontalScrollElasticity() const { return m_horizontalScrollElasticity; }
- virtual ScrollbarMode horizontalScrollbarMode() const { return ScrollbarAuto; }
- virtual ScrollbarMode verticalScrollbarMode() const { return ScrollbarAuto; }
- bool canHaveScrollbars() const { return horizontalScrollbarMode() != ScrollbarAlwaysOff || verticalScrollbarMode() != ScrollbarAlwaysOff; }
+ virtual ScrollbarMode horizontalScrollbarMode() const { return ScrollbarMode::Auto; }
+ virtual ScrollbarMode verticalScrollbarMode() const { return ScrollbarMode::Auto; }
+ bool canHaveScrollbars() const { return horizontalScrollbarMode() != ScrollbarMode::AlwaysOff || verticalScrollbarMode() != ScrollbarMode::AlwaysOff; }
virtual bool horizontalScrollbarHiddenByStyle() const { return false; }
virtual bool verticalScrollbarHiddenByStyle() const { return false; }
Modified: trunk/Source/WebCore/platform/ios/wak/WAKScrollView.mm (285356 => 285357)
--- trunk/Source/WebCore/platform/ios/wak/WAKScrollView.mm 2021-11-05 22:42:12 UTC (rev 285356)
+++ trunk/Source/WebCore/platform/ios/wak/WAKScrollView.mm 2021-11-05 23:06:50 UTC (rev 285357)
@@ -194,12 +194,12 @@
- (WebCore::ScrollbarMode)horizontalScrollingMode
{
- return WebCore::ScrollbarAuto;
+ return WebCore::ScrollbarMode::Auto;
}
- (WebCore::ScrollbarMode)verticalScrollingMode
{
- return WebCore::ScrollbarAuto;
+ return WebCore::ScrollbarMode::Auto;
}
#pragma mark -
Modified: trunk/Source/WebCore/rendering/RenderFrameBase.cpp (285356 => 285357)
--- trunk/Source/WebCore/rendering/RenderFrameBase.cpp 2021-11-05 22:42:12 UTC (rev 285356)
+++ trunk/Source/WebCore/rendering/RenderFrameBase.cpp 2021-11-05 23:06:50 UTC (rev 285357)
@@ -93,7 +93,7 @@
// if scrollbars are off, and the width or height are fixed
// we obey them and do not expand. With frame flattening
// no subframe much ever become scrollable.
- bool isScrollable = frameOwnerElement().scrollingMode() != ScrollbarAlwaysOff;
+ bool isScrollable = frameOwnerElement().scrollingMode() != ScrollbarMode::AlwaysOff;
// consider iframe inset border
int hBorder = borderLeft() + borderRight();
Modified: trunk/Source/WebCore/rendering/RenderIFrame.cpp (285356 => 285357)
--- trunk/Source/WebCore/rendering/RenderIFrame.cpp 2021-11-05 22:42:12 UTC (rev 285356)
+++ trunk/Source/WebCore/rendering/RenderIFrame.cpp 2021-11-05 23:06:50 UTC (rev 285357)
@@ -86,7 +86,7 @@
if (style().width().isFixed() && style().height().isFixed()) {
// Do not flatten iframes with scrolling="no".
- if (iframeElement().scrollingMode() == ScrollbarAlwaysOff)
+ if (iframeElement().scrollingMode() == ScrollbarMode::AlwaysOff)
return false;
// Do not flatten iframes that have zero size, as flattening might make them visible.
if (style().width().value() <= 0 || style().height().value() <= 0)
Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (285356 => 285357)
--- trunk/Source/WebCore/rendering/RenderLayer.cpp 2021-11-05 22:42:12 UTC (rev 285356)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp 2021-11-05 23:06:50 UTC (rev 285357)
@@ -2401,7 +2401,7 @@
static inline bool frameElementAndViewPermitScroll(HTMLFrameElementBase* frameElementBase, FrameView& frameView)
{
// If scrollbars aren't explicitly forbidden, permit scrolling.
- if (frameElementBase && frameElementBase->scrollingMode() != ScrollbarAlwaysOff)
+ if (frameElementBase && frameElementBase->scrollingMode() != ScrollbarMode::AlwaysOff)
return true;
// If scrollbars are forbidden, user initiated scrolls should obviously be ignored.
Modified: trunk/Source/WebCore/rendering/RenderLayerBacking.cpp (285356 => 285357)
--- trunk/Source/WebCore/rendering/RenderLayerBacking.cpp 2021-11-05 22:42:12 UTC (rev 285356)
+++ trunk/Source/WebCore/rendering/RenderLayerBacking.cpp 2021-11-05 23:06:50 UTC (rev 285357)
@@ -403,10 +403,10 @@
bool useMinimalTilesDuringLiveResize = frameView.inLiveResize();
if (frameView.speculativeTilingEnabled() && !useMinimalTilesDuringLiveResize) {
bool clipsToExposedRect = static_cast<bool>(frameView.viewExposedRect());
- if (frameView.horizontalScrollbarMode() != ScrollbarAlwaysOff || clipsToExposedRect)
+ if (frameView.horizontalScrollbarMode() != ScrollbarMode::AlwaysOff || clipsToExposedRect)
tileCoverage |= TiledBacking::CoverageForHorizontalScrolling;
- if (frameView.verticalScrollbarMode() != ScrollbarAlwaysOff || clipsToExposedRect)
+ if (frameView.verticalScrollbarMode() != ScrollbarMode::AlwaysOff || clipsToExposedRect)
tileCoverage |= TiledBacking::CoverageForVerticalScrolling;
}
return tileCoverage;
Modified: trunk/Source/WebKit/ChangeLog (285356 => 285357)
--- trunk/Source/WebKit/ChangeLog 2021-11-05 22:42:12 UTC (rev 285356)
+++ trunk/Source/WebKit/ChangeLog 2021-11-05 23:06:50 UTC (rev 285357)
@@ -1,5 +1,18 @@
2021-11-05 Nikolaos Mouchtaris <nmouchta...@apple.com>
+ Make scroll bar mode an enum class
+ https://bugs.webkit.org/show_bug.cgi?id=232651
+
+ Reviewed by Simon Fraser.
+
+ * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
+ (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage):
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::setAlwaysShowsHorizontalScroller):
+ (WebKit::WebPage::setAlwaysShowsVerticalScroller):
+
+2021-11-05 Nikolaos Mouchtaris <nmouchta...@apple.com>
+
Make scroll elasticity an enum class
https://bugs.webkit.org/show_bug.cgi?id=232646
Modified: trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp (285356 => 285357)
--- trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp 2021-11-05 22:42:12 UTC (rev 285356)
+++ trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp 2021-11-05 23:06:50 UTC (rev 285357)
@@ -1528,10 +1528,10 @@
&& webPage->shouldUseCustomContentProviderForResponse(m_frame->coreFrame()->loader().documentLoader()->response());
m_frameCameFromBackForwardCache = false;
- ScrollbarMode defaultScrollbarMode = shouldHideScrollbars ? ScrollbarAlwaysOff : ScrollbarAuto;
+ ScrollbarMode defaultScrollbarMode = shouldHideScrollbars ? ScrollbarMode::AlwaysOff : ScrollbarMode::Auto;
- ScrollbarMode horizontalScrollbarMode = webPage->alwaysShowsHorizontalScroller() ? ScrollbarAlwaysOn : defaultScrollbarMode;
- ScrollbarMode verticalScrollbarMode = webPage->alwaysShowsVerticalScroller() ? ScrollbarAlwaysOn : defaultScrollbarMode;
+ ScrollbarMode horizontalScrollbarMode = webPage->alwaysShowsHorizontalScroller() ? ScrollbarMode::AlwaysOn : defaultScrollbarMode;
+ ScrollbarMode verticalScrollbarMode = webPage->alwaysShowsVerticalScroller() ? ScrollbarMode::AlwaysOn : defaultScrollbarMode;
bool horizontalLock = shouldHideScrollbars || webPage->alwaysShowsHorizontalScroller();
bool verticalLock = shouldHideScrollbars || webPage->alwaysShowsVerticalScroller();
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp (285356 => 285357)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2021-11-05 22:42:12 UTC (rev 285356)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2021-11-05 23:06:50 UTC (rev 285357)
@@ -6154,7 +6154,7 @@
auto view = corePage()->mainFrame().view();
if (!alwaysShowsHorizontalScroller)
view->setHorizontalScrollbarLock(false);
- view->setHorizontalScrollbarMode(alwaysShowsHorizontalScroller ? ScrollbarAlwaysOn : m_mainFrameIsScrollable ? ScrollbarAuto : ScrollbarAlwaysOff, alwaysShowsHorizontalScroller || !m_mainFrameIsScrollable);
+ view->setHorizontalScrollbarMode(alwaysShowsHorizontalScroller ? ScrollbarMode::AlwaysOn : m_mainFrameIsScrollable ? ScrollbarMode::Auto : ScrollbarMode::AlwaysOff, alwaysShowsHorizontalScroller || !m_mainFrameIsScrollable);
}
void WebPage::setAlwaysShowsVerticalScroller(bool alwaysShowsVerticalScroller)
@@ -6166,7 +6166,7 @@
auto view = corePage()->mainFrame().view();
if (!alwaysShowsVerticalScroller)
view->setVerticalScrollbarLock(false);
- view->setVerticalScrollbarMode(alwaysShowsVerticalScroller ? ScrollbarAlwaysOn : m_mainFrameIsScrollable ? ScrollbarAuto : ScrollbarAlwaysOff, alwaysShowsVerticalScroller || !m_mainFrameIsScrollable);
+ view->setVerticalScrollbarMode(alwaysShowsVerticalScroller ? ScrollbarMode::AlwaysOn : m_mainFrameIsScrollable ? ScrollbarMode::Auto : ScrollbarMode::AlwaysOff, alwaysShowsVerticalScroller || !m_mainFrameIsScrollable);
}
void WebPage::setMinimumSizeForAutoLayout(const IntSize& size)
Modified: trunk/Source/WebKitLegacy/mac/ChangeLog (285356 => 285357)
--- trunk/Source/WebKitLegacy/mac/ChangeLog 2021-11-05 22:42:12 UTC (rev 285356)
+++ trunk/Source/WebKitLegacy/mac/ChangeLog 2021-11-05 23:06:50 UTC (rev 285357)
@@ -1,3 +1,23 @@
+2021-11-05 Nikolaos Mouchtaris <nmouchta...@apple.com>
+
+ Make scroll bar mode an enum class
+ https://bugs.webkit.org/show_bug.cgi?id=232651
+
+ Reviewed by Simon Fraser.
+
+ * WebCoreSupport/WebFrameLoaderClient.mm:
+ (WebFrameLoaderClient::transitionToCommittedForNewPage):
+ * WebView/WebDynamicScrollBarsView.mm:
+ (-[WebDynamicScrollBarsView setAllowsHorizontalScrolling:]):
+ (-[WebDynamicScrollBarsView updateScrollers]):
+ (-[WebDynamicScrollBarsView allowsHorizontalScrolling]):
+ (-[WebDynamicScrollBarsView allowsVerticalScrolling]):
+ * WebView/WebView.mm:
+ (-[WebView setAlwaysShowVerticalScroller:]):
+ (-[WebView alwaysShowVerticalScroller]):
+ (-[WebView setAlwaysShowHorizontalScroller:]):
+ (-[WebView alwaysShowHorizontalScroller]):
+
2021-11-03 Chris Dumez <cdu...@apple.com>
Unreviewed iOS build fix.
Modified: trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm (285356 => 285357)
--- trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm 2021-11-05 22:42:12 UTC (rev 285356)
+++ trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm 2021-11-05 23:06:50 UTC (rev 285357)
@@ -1468,7 +1468,7 @@
documentLoader->setTitle({ [dataSource pageTitle], WebCore::TextDirection::LTR });
if (auto* ownerElement = coreFrame->ownerElement())
- coreFrame->view()->setCanHaveScrollbars(ownerElement->scrollingMode() != WebCore::ScrollbarAlwaysOff);
+ coreFrame->view()->setCanHaveScrollbars(ownerElement->scrollingMode() != WebCore::ScrollbarMode::AlwaysOff);
// If the document view implicitly became first responder, make sure to set the focused frame properly.
if ([[documentView window] firstResponder] == documentView) {
Modified: trunk/Source/WebKitLegacy/mac/WebView/WebDynamicScrollBarsView.mm (285356 => 285357)
--- trunk/Source/WebKitLegacy/mac/WebView/WebDynamicScrollBarsView.mm 2021-11-05 22:42:12 UTC (rev 285356)
+++ trunk/Source/WebKitLegacy/mac/WebView/WebDynamicScrollBarsView.mm 2021-11-05 23:06:50 UTC (rev 285357)
@@ -133,10 +133,10 @@
{
if (_private->hScrollModeLocked)
return;
- if (flag && _private->hScroll == ScrollbarAlwaysOff)
- _private->hScroll = ScrollbarAuto;
- else if (!flag && _private->hScroll != ScrollbarAlwaysOff)
- _private->hScroll = ScrollbarAlwaysOff;
+ if (flag && _private->hScroll == ScrollbarMode::AlwaysOff)
+ _private->hScroll = ScrollbarMode::Auto;
+ else if (!flag && _private->hScroll != ScrollbarMode::AlwaysOff)
+ _private->hScroll = ScrollbarMode::AlwaysOff;
[self updateScrollers];
}
@@ -300,12 +300,12 @@
newHasVerticalScroller = NO;
}
- if (_private->hScroll != ScrollbarAuto)
- newHasHorizontalScroller = (_private->hScroll == ScrollbarAlwaysOn);
- if (_private->vScroll != ScrollbarAuto)
- newHasVerticalScroller = (_private->vScroll == ScrollbarAlwaysOn);
+ if (_private->hScroll != ScrollbarMode::Auto)
+ newHasHorizontalScroller = (_private->hScroll == ScrollbarMode::AlwaysOn);
+ if (_private->vScroll != ScrollbarMode::Auto)
+ newHasVerticalScroller = (_private->vScroll == ScrollbarMode::AlwaysOn);
- if (!documentView || _private->suppressLayout || _private->suppressScrollers || (_private->hScroll != ScrollbarAuto && _private->vScroll != ScrollbarAuto)) {
+ if (!documentView || _private->suppressLayout || _private->suppressScrollers || (_private->hScroll != ScrollbarMode::Auto && _private->vScroll != ScrollbarMode::Auto)) {
_private->horizontalScrollingAllowedButScrollerHidden = newHasHorizontalScroller && _private->alwaysHideHorizontalScroller;
if (_private->horizontalScrollingAllowedButScrollerHidden)
newHasHorizontalScroller = NO;
@@ -342,13 +342,13 @@
frameSize.width = ceilf(frameSize.width);
frameSize.height = ceilf(frameSize.height);
- if (_private->hScroll == ScrollbarAuto) {
+ if (_private->hScroll == ScrollbarMode::Auto) {
newHasHorizontalScroller = documentSize.width > visibleSize.width;
if (newHasHorizontalScroller && !_private->inUpdateScrollersLayoutPass && documentSize.height <= frameSize.height && documentSize.width <= frameSize.width)
newHasHorizontalScroller = NO;
}
- if (_private->vScroll == ScrollbarAuto) {
+ if (_private->vScroll == ScrollbarMode::Auto) {
newHasVerticalScroller = documentSize.height > visibleSize.height;
if (newHasVerticalScroller && !_private->inUpdateScrollersLayoutPass && documentSize.height <= frameSize.height && documentSize.width <= frameSize.width)
newHasVerticalScroller = NO;
@@ -356,9 +356,9 @@
// Unless in ScrollbarsAlwaysOn mode, if we ever turn one scrollbar off, always turn the other one off too.
// Never ever try to both gain/lose a scrollbar in the same pass.
- if (!newHasHorizontalScroller && hasHorizontalScroller && _private->vScroll != ScrollbarAlwaysOn)
+ if (!newHasHorizontalScroller && hasHorizontalScroller && _private->vScroll != ScrollbarMode::AlwaysOn)
newHasVerticalScroller = NO;
- if (!newHasVerticalScroller && hasVerticalScroller && _private->hScroll != ScrollbarAlwaysOn)
+ if (!newHasVerticalScroller && hasVerticalScroller && _private->hScroll != ScrollbarMode::AlwaysOn)
newHasHorizontalScroller = NO;
_private->horizontalScrollingAllowedButScrollerHidden = newHasHorizontalScroller && _private->alwaysHideHorizontalScroller;
@@ -438,12 +438,12 @@
- (BOOL)allowsHorizontalScrolling
{
- return _private->hScroll != ScrollbarAlwaysOff;
+ return _private->hScroll != ScrollbarMode::AlwaysOff;
}
- (BOOL)allowsVerticalScrolling
{
- return _private->vScroll != ScrollbarAlwaysOff;
+ return _private->vScroll != ScrollbarMode::AlwaysOff;
}
- (void)scrollingModes:(WebCore::ScrollbarMode*)hMode vertical:(WebCore::ScrollbarMode*)vMode
Modified: trunk/Source/WebKitLegacy/mac/WebView/WebView.mm (285356 => 285357)
--- trunk/Source/WebKitLegacy/mac/WebView/WebView.mm 2021-11-05 22:42:12 UTC (rev 285356)
+++ trunk/Source/WebKitLegacy/mac/WebView/WebView.mm 2021-11-05 23:06:50 UTC (rev 285357)
@@ -3658,10 +3658,10 @@
{
WebDynamicScrollBarsView *scrollview = [[[self mainFrame] frameView] _scrollView];
if (flag) {
- [scrollview setVerticalScrollingMode:WebCore::ScrollbarAlwaysOn andLock:YES];
+ [scrollview setVerticalScrollingMode:WebCore::ScrollbarMode::AlwaysOn andLock:YES];
} else {
[scrollview setVerticalScrollingModeLocked:NO];
- [scrollview setVerticalScrollingMode:WebCore::ScrollbarAuto andLock:NO];
+ [scrollview setVerticalScrollingMode:WebCore::ScrollbarMode::Auto andLock:NO];
}
}
@@ -3668,7 +3668,7 @@
- (BOOL)alwaysShowVerticalScroller
{
WebDynamicScrollBarsView *scrollview = [[[self mainFrame] frameView] _scrollView];
- return [scrollview verticalScrollingModeLocked] && [scrollview verticalScrollingMode] == WebCore::ScrollbarAlwaysOn;
+ return [scrollview verticalScrollingModeLocked] && [scrollview verticalScrollingMode] == WebCore::ScrollbarMode::AlwaysOn;
}
- (void)setAlwaysShowHorizontalScroller:(BOOL)flag
@@ -3675,10 +3675,10 @@
{
WebDynamicScrollBarsView *scrollview = [[[self mainFrame] frameView] _scrollView];
if (flag) {
- [scrollview setHorizontalScrollingMode:WebCore::ScrollbarAlwaysOn andLock:YES];
+ [scrollview setHorizontalScrollingMode:WebCore::ScrollbarMode::AlwaysOn andLock:YES];
} else {
[scrollview setHorizontalScrollingModeLocked:NO];
- [scrollview setHorizontalScrollingMode:WebCore::ScrollbarAuto andLock:NO];
+ [scrollview setHorizontalScrollingMode:WebCore::ScrollbarMode::Auto andLock:NO];
}
}
@@ -3691,7 +3691,7 @@
- (BOOL)alwaysShowHorizontalScroller
{
WebDynamicScrollBarsView *scrollview = [[[self mainFrame] frameView] _scrollView];
- return [scrollview horizontalScrollingModeLocked] && [scrollview horizontalScrollingMode] == WebCore::ScrollbarAlwaysOn;
+ return [scrollview horizontalScrollingModeLocked] && [scrollview horizontalScrollingMode] == WebCore::ScrollbarMode::AlwaysOn;
}
#endif // !PLATFORM(IOS_FAMILY)