Title: [271934] trunk/Source/WebCore
Revision
271934
Author
[email protected]
Date
2021-01-26 21:22:47 -0800 (Tue, 26 Jan 2021)

Log Message

Refactor computePreferredLogicalWidths
https://bugs.webkit.org/show_bug.cgi?id=220984

Patch by Rob Buis <[email protected]> on 2021-01-26
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):

Modified Paths

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);
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to