Diff
Modified: trunk/Source/WebCore/ChangeLog (271933 => 271934)
--- trunk/Source/WebCore/ChangeLog 2021-01-27 04:56:57 UTC (rev 271933)
+++ trunk/Source/WebCore/ChangeLog 2021-01-27 05:22:47 UTC (rev 271934)
@@ -1,3 +1,34 @@
+2021-01-26 Rob Buis <[email protected]>
+
+ Refactor computePreferredLogicalWidths
+ https://bugs.webkit.org/show_bug.cgi?id=220984
+
+ Reviewed by Darin Adler.
+
+ Refactor computePreferredLogicalWidths so the common
+ code dealing with min/max and border/padding handling
+ is centralized in RenderBox.
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::computePreferredLogicalWidths):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::computePreferredLogicalWidths):
+ * rendering/RenderBox.h:
+ * rendering/RenderDeprecatedFlexibleBox.cpp:
+ (WebCore::RenderDeprecatedFlexibleBox::computePreferredLogicalWidths):
+ * rendering/RenderFileUploadControl.cpp:
+ (WebCore::RenderFileUploadControl::computePreferredLogicalWidths):
+ * rendering/RenderFragmentContainer.cpp:
+ (WebCore::RenderFragmentContainer::computePreferredLogicalWidths):
+ * rendering/RenderListBox.cpp:
+ (WebCore::RenderListBox::computePreferredLogicalWidths):
+ * rendering/RenderMenuList.cpp:
+ (RenderMenuList::computePreferredLogicalWidths):
+ * rendering/RenderSlider.cpp:
+ (WebCore::RenderSlider::computePreferredLogicalWidths):
+ * rendering/RenderTextControl.cpp:
+ (WebCore::RenderTextControl::computePreferredLogicalWidths):
+
2021-01-26 Simon Fraser <[email protected]>
REGRESSION (r268947) Some table elements become blank when scroll-bar is toggled
Modified: trunk/Source/WebCore/rendering/RenderBlock.cpp (271933 => 271934)
--- trunk/Source/WebCore/rendering/RenderBlock.cpp 2021-01-27 04:56:57 UTC (rev 271933)
+++ trunk/Source/WebCore/rendering/RenderBlock.cpp 2021-01-27 05:22:47 UTC (rev 271934)
@@ -2285,21 +2285,7 @@
else
computeIntrinsicLogicalWidths(m_minPreferredLogicalWidth, m_maxPreferredLogicalWidth);
- if (styleToUse.logicalMaxWidth().isFixed()) {
- auto adjustContentBoxLogicalWidth = adjustContentBoxLogicalWidthForBoxSizing(styleToUse.logicalMaxWidth());
- m_maxPreferredLogicalWidth = std::min(m_maxPreferredLogicalWidth, adjustContentBoxLogicalWidth);
- m_minPreferredLogicalWidth = std::min(m_minPreferredLogicalWidth, adjustContentBoxLogicalWidth);
- }
-
- if (styleToUse.logicalMinWidth().isFixed() && styleToUse.logicalMinWidth().value() > 0) {
- auto adjustContentBoxLogicalWidth = adjustContentBoxLogicalWidthForBoxSizing(styleToUse.logicalMinWidth());
- m_maxPreferredLogicalWidth = std::max(m_maxPreferredLogicalWidth, adjustContentBoxLogicalWidth);
- m_minPreferredLogicalWidth = std::max(m_minPreferredLogicalWidth, adjustContentBoxLogicalWidth);
- }
-
- LayoutUnit borderAndPadding = borderAndPaddingLogicalWidth();
- m_minPreferredLogicalWidth += borderAndPadding;
- m_maxPreferredLogicalWidth += borderAndPadding;
+ RenderBox::computePreferredLogicalWidths(styleToUse.logicalMinWidth(), styleToUse.logicalMaxWidth(), borderAndPaddingLogicalWidth());
setPreferredLogicalWidthsDirty(false);
}
Modified: trunk/Source/WebCore/rendering/RenderBox.cpp (271933 => 271934)
--- trunk/Source/WebCore/rendering/RenderBox.cpp 2021-01-27 04:56:57 UTC (rev 271933)
+++ trunk/Source/WebCore/rendering/RenderBox.cpp 2021-01-27 05:22:47 UTC (rev 271934)
@@ -3219,6 +3219,24 @@
return false;
}
+void RenderBox::computePreferredLogicalWidths(const Length& minWidth, const Length& maxWidth, LayoutUnit borderAndPadding)
+{
+ if (maxWidth.isFixed()) {
+ auto adjustContentBoxLogicalWidth = adjustContentBoxLogicalWidthForBoxSizing(maxWidth);
+ m_maxPreferredLogicalWidth = std::min(m_maxPreferredLogicalWidth, adjustContentBoxLogicalWidth);
+ m_minPreferredLogicalWidth = std::min(m_minPreferredLogicalWidth, adjustContentBoxLogicalWidth);
+ }
+
+ if (minWidth.isFixed() && minWidth.value() > 0) {
+ auto adjustContentBoxLogicalWidth = adjustContentBoxLogicalWidthForBoxSizing(minWidth);
+ m_maxPreferredLogicalWidth = std::max(m_maxPreferredLogicalWidth, adjustContentBoxLogicalWidth);
+ m_minPreferredLogicalWidth = std::max(m_minPreferredLogicalWidth, adjustContentBoxLogicalWidth);
+ }
+
+ m_minPreferredLogicalWidth += borderAndPadding;
+ m_maxPreferredLogicalWidth += borderAndPadding;
+}
+
bool RenderBox::replacedMinMaxLogicalHeightComputesAsNone(SizeType sizeType) const
{
ASSERT(sizeType == MinSize || sizeType == MaxSize);
Modified: trunk/Source/WebCore/rendering/RenderBox.h (271933 => 271934)
--- trunk/Source/WebCore/rendering/RenderBox.h 2021-01-27 04:56:57 UTC (rev 271933)
+++ trunk/Source/WebCore/rendering/RenderBox.h 2021-01-27 05:22:47 UTC (rev 271934)
@@ -713,6 +713,8 @@
return ((inlineSize - borderPaddingInlineSum) / aspectRatio) + borderPaddingBlockSum;
}
+ void computePreferredLogicalWidths(const Length& minWidth, const Length& maxWidth, LayoutUnit borderAndPadding);
+
private:
bool replacedMinMaxLogicalHeightComputesAsNone(SizeType) const;
Modified: trunk/Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp (271933 => 271934)
--- trunk/Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp 2021-01-27 04:56:57 UTC (rev 271933)
+++ trunk/Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp 2021-01-27 05:22:47 UTC (rev 271934)
@@ -227,20 +227,8 @@
else
computeIntrinsicLogicalWidths(m_minPreferredLogicalWidth, m_maxPreferredLogicalWidth);
- if (style().minWidth().isFixed() && style().minWidth().value() > 0) {
- m_maxPreferredLogicalWidth = std::max(m_maxPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(style().minWidth()));
- m_minPreferredLogicalWidth = std::max(m_minPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(style().minWidth()));
- }
+ RenderBox::computePreferredLogicalWidths(style().minWidth(), style().maxWidth(), borderAndPaddingLogicalWidth());
- if (style().maxWidth().isFixed()) {
- m_maxPreferredLogicalWidth = std::min(m_maxPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(style().maxWidth()));
- m_minPreferredLogicalWidth = std::min(m_minPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(style().maxWidth()));
- }
-
- LayoutUnit borderAndPadding = borderAndPaddingLogicalWidth();
- m_minPreferredLogicalWidth += borderAndPadding;
- m_maxPreferredLogicalWidth += borderAndPadding;
-
setPreferredLogicalWidthsDirty(false);
}
Modified: trunk/Source/WebCore/rendering/RenderFileUploadControl.cpp (271933 => 271934)
--- trunk/Source/WebCore/rendering/RenderFileUploadControl.cpp 2021-01-27 04:56:57 UTC (rev 271933)
+++ trunk/Source/WebCore/rendering/RenderFileUploadControl.cpp 2021-01-27 05:22:47 UTC (rev 271934)
@@ -228,20 +228,8 @@
else
computeIntrinsicLogicalWidths(m_minPreferredLogicalWidth, m_maxPreferredLogicalWidth);
- if (style().minWidth().isFixed() && style().minWidth().value() > 0) {
- m_maxPreferredLogicalWidth = std::max(m_maxPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(style().minWidth()));
- m_minPreferredLogicalWidth = std::max(m_minPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(style().minWidth()));
- }
+ RenderBox::computePreferredLogicalWidths(style().minWidth(), style().maxWidth(), horizontalBorderAndPaddingExtent());
- if (style().maxWidth().isFixed()) {
- m_maxPreferredLogicalWidth = std::min(m_maxPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(style().maxWidth()));
- m_minPreferredLogicalWidth = std::min(m_minPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(style().maxWidth()));
- }
-
- int toAdd = horizontalBorderAndPaddingExtent();
- m_minPreferredLogicalWidth += toAdd;
- m_maxPreferredLogicalWidth += toAdd;
-
setPreferredLogicalWidthsDirty(false);
}
Modified: trunk/Source/WebCore/rendering/RenderFragmentContainer.cpp (271933 => 271934)
--- trunk/Source/WebCore/rendering/RenderFragmentContainer.cpp 2021-01-27 04:56:57 UTC (rev 271933)
+++ trunk/Source/WebCore/rendering/RenderFragmentContainer.cpp 2021-01-27 05:22:47 UTC (rev 271934)
@@ -378,19 +378,8 @@
else
computeIntrinsicLogicalWidths(m_minPreferredLogicalWidth, m_maxPreferredLogicalWidth);
- if (styleToUse.logicalMinWidth().isFixed() && styleToUse.logicalMinWidth().value() > 0) {
- m_maxPreferredLogicalWidth = std::max(m_maxPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(styleToUse.logicalMinWidth()));
- m_minPreferredLogicalWidth = std::max(m_minPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(styleToUse.logicalMinWidth()));
- }
+ RenderBox::computePreferredLogicalWidths(style().logicalMinWidth(), style().logicalMaxWidth(), borderAndPaddingLogicalWidth());
- if (styleToUse.logicalMaxWidth().isFixed()) {
- m_maxPreferredLogicalWidth = std::min(m_maxPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(styleToUse.logicalMaxWidth()));
- m_minPreferredLogicalWidth = std::min(m_minPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(styleToUse.logicalMaxWidth()));
- }
-
- LayoutUnit borderAndPadding = borderAndPaddingLogicalWidth();
- m_minPreferredLogicalWidth += borderAndPadding;
- m_maxPreferredLogicalWidth += borderAndPadding;
setPreferredLogicalWidthsDirty(false);
}
Modified: trunk/Source/WebCore/rendering/RenderListBox.cpp (271933 => 271934)
--- trunk/Source/WebCore/rendering/RenderListBox.cpp 2021-01-27 04:56:57 UTC (rev 271933)
+++ trunk/Source/WebCore/rendering/RenderListBox.cpp 2021-01-27 05:22:47 UTC (rev 271934)
@@ -231,20 +231,8 @@
else
computeIntrinsicLogicalWidths(m_minPreferredLogicalWidth, m_maxPreferredLogicalWidth);
- if (style().minWidth().isFixed() && style().minWidth().value() > 0) {
- m_maxPreferredLogicalWidth = std::max(m_maxPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(style().minWidth()));
- m_minPreferredLogicalWidth = std::max(m_minPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(style().minWidth()));
- }
+ RenderBox::computePreferredLogicalWidths(style().minWidth(), style().maxWidth(), horizontalBorderAndPaddingExtent());
- if (style().maxWidth().isFixed()) {
- m_maxPreferredLogicalWidth = std::min(m_maxPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(style().maxWidth()));
- m_minPreferredLogicalWidth = std::min(m_minPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(style().maxWidth()));
- }
-
- LayoutUnit toAdd = horizontalBorderAndPaddingExtent();
- m_minPreferredLogicalWidth += toAdd;
- m_maxPreferredLogicalWidth += toAdd;
-
setPreferredLogicalWidthsDirty(false);
}
Modified: trunk/Source/WebCore/rendering/RenderMenuList.cpp (271933 => 271934)
--- trunk/Source/WebCore/rendering/RenderMenuList.cpp 2021-01-27 04:56:57 UTC (rev 271933)
+++ trunk/Source/WebCore/rendering/RenderMenuList.cpp 2021-01-27 05:22:47 UTC (rev 271934)
@@ -330,20 +330,8 @@
else
computeIntrinsicLogicalWidths(m_minPreferredLogicalWidth, m_maxPreferredLogicalWidth);
- if (style().minWidth().isFixed() && style().minWidth().value() > 0) {
- m_maxPreferredLogicalWidth = std::max(m_maxPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(style().minWidth()));
- m_minPreferredLogicalWidth = std::max(m_minPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(style().minWidth()));
- }
+ RenderBox::computePreferredLogicalWidths(style().minWidth(), style().maxWidth(), horizontalBorderAndPaddingExtent());
- if (style().maxWidth().isFixed()) {
- m_maxPreferredLogicalWidth = std::min(m_maxPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(style().maxWidth()));
- m_minPreferredLogicalWidth = std::min(m_minPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(style().maxWidth()));
- }
-
- LayoutUnit toAdd = horizontalBorderAndPaddingExtent();
- m_minPreferredLogicalWidth += toAdd;
- m_maxPreferredLogicalWidth += toAdd;
-
setPreferredLogicalWidthsDirty(false);
}
Modified: trunk/Source/WebCore/rendering/RenderSlider.cpp (271933 => 271934)
--- trunk/Source/WebCore/rendering/RenderSlider.cpp 2021-01-27 04:56:57 UTC (rev 271933)
+++ trunk/Source/WebCore/rendering/RenderSlider.cpp 2021-01-27 05:22:47 UTC (rev 271934)
@@ -84,20 +84,8 @@
else
computeIntrinsicLogicalWidths(m_minPreferredLogicalWidth, m_maxPreferredLogicalWidth);
- if (style().minWidth().isFixed() && style().minWidth().value() > 0) {
- m_maxPreferredLogicalWidth = std::max(m_maxPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(style().minWidth()));
- m_minPreferredLogicalWidth = std::max(m_minPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(style().minWidth()));
- }
+ RenderBox::computePreferredLogicalWidths(style().minWidth(), style().maxWidth(), horizontalBorderAndPaddingExtent());
- if (style().maxWidth().isFixed()) {
- m_maxPreferredLogicalWidth = std::min(m_maxPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(style().maxWidth()));
- m_minPreferredLogicalWidth = std::min(m_minPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(style().maxWidth()));
- }
-
- LayoutUnit toAdd = horizontalBorderAndPaddingExtent();
- m_minPreferredLogicalWidth += toAdd;
- m_maxPreferredLogicalWidth += toAdd;
-
setPreferredLogicalWidthsDirty(false);
}
Modified: trunk/Source/WebCore/rendering/RenderTextControl.cpp (271933 => 271934)
--- trunk/Source/WebCore/rendering/RenderTextControl.cpp 2021-01-27 04:56:57 UTC (rev 271933)
+++ trunk/Source/WebCore/rendering/RenderTextControl.cpp 2021-01-27 05:22:47 UTC (rev 271934)
@@ -176,21 +176,8 @@
else
computeIntrinsicLogicalWidths(m_minPreferredLogicalWidth, m_maxPreferredLogicalWidth);
- if (style().logicalMinWidth().isFixed() && style().logicalMinWidth().value() > 0) {
- m_maxPreferredLogicalWidth = std::max(m_maxPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(style().logicalMinWidth()));
- m_minPreferredLogicalWidth = std::max(m_minPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(style().logicalMinWidth()));
- }
+ RenderBox::computePreferredLogicalWidths(style().logicalMinWidth(), style().logicalMaxWidth(), borderAndPaddingLogicalWidth());
- if (style().logicalMaxWidth().isFixed()) {
- m_maxPreferredLogicalWidth = std::min(m_maxPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(style().logicalMaxWidth()));
- m_minPreferredLogicalWidth = std::min(m_minPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(style().logicalMaxWidth()));
- }
-
- LayoutUnit toAdd = borderAndPaddingLogicalWidth();
-
- m_minPreferredLogicalWidth += toAdd;
- m_maxPreferredLogicalWidth += toAdd;
-
setPreferredLogicalWidthsDirty(false);
}