[webkit-changes] [WebKit/WebKit] e20aa5: [LFC][Integration] Always resolve margin/padding v...

Alan Baradlay noreply at github.com
Mon Sep 23 06:55:34 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: e20aa5ee8e8a4d457bef5e5d22524ad0df517b1d
      https://github.com/WebKit/WebKit/commit/e20aa5ee8e8a4d457bef5e5d22524ad0df517b1d
  Author: Alan Baradlay <zalan at apple.com>
  Date:   2024-09-23 (Mon, 23 Sep 2024)

  Changed paths:
    M Source/WebCore/layout/integration/LayoutIntegrationFormattingContextLayout.cpp
    M Source/WebCore/layout/integration/inline/LayoutIntegrationBoxGeometryUpdater.cpp
    M Source/WebCore/layout/integration/inline/LayoutIntegrationBoxGeometryUpdater.h
    M Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp
    M Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.h
    M Source/WebCore/rendering/RenderBlockFlow.cpp

  Log Message:
  -----------
  [LFC][Integration] Always resolve margin/padding values (BoxGeometryUpdater)
https://bugs.webkit.org/show_bug.cgi?id=280039

Reviewed by Antti Koivisto.

This is in preparation for using BoxGeometryUpdater from FFC and also moving more
logic from render tree to LFC.

With the exception of some table/cell/fieldset special decoration handling, we should be able to
compute margin, border and padding values without calling layout on the renderer itself.
(which we already skip for the intrinsic width computation codepath).

This will enable us to use less and less renderer layout logic to the point where we
only need to call into a render layout when it is a formatting context root (to initiate layout on its descendants).

This change also ensures that BoxGeometry does not hold any stale values even temporarily from starting running InlineFormattingContext::layout
until calling layoutWithFormattingContextForBox on each (non-inline box) inline level boxes.

-special case table cell's "intrinsic padding" values and collapsed borders.
-also fieldset border which is really unfortunate.

Eventually all these logic will get moved over to updater.

* Source/WebCore/layout/integration/LayoutIntegrationFormattingContextLayout.cpp:
(WebCore::LayoutIntegration::layoutWithFormattingContextForBox):
* Source/WebCore/layout/integration/inline/LayoutIntegrationBoxGeometryUpdater.cpp:
(WebCore::LayoutIntegration::usedValueOrZero):
(WebCore::LayoutIntegration::BoxGeometryUpdater::updateListMarkerDimensions):
(WebCore::LayoutIntegration::horizontalLogicalMargin):
(WebCore::LayoutIntegration::logicalBorder):
(WebCore::LayoutIntegration::logicalPadding):
(WebCore::LayoutIntegration::BoxGeometryUpdater::updateLayoutBoxDimensions):
(WebCore::LayoutIntegration::BoxGeometryUpdater::updateInlineBoxDimensions):
(WebCore::LayoutIntegration::BoxGeometryUpdater::setGeometriesForLayout):
(WebCore::LayoutIntegration::BoxGeometryUpdater::setGeometriesForIntrinsicWidth):
(WebCore::LayoutIntegration::BoxGeometryUpdater::updateInlineContentConstraints):
(WebCore::LayoutIntegration::BoxGeometryUpdater::updateGeometryAfterLayout):
(WebCore::LayoutIntegration::BoxGeometryUpdater::updateBoxGeometry):
(WebCore::LayoutIntegration::fixedValueOrZero): Deleted.
* Source/WebCore/layout/integration/inline/LayoutIntegrationBoxGeometryUpdater.h:
* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp:
(WebCore::LayoutIntegration::LineLayout::updateInlineContentDimensions):
(WebCore::LayoutIntegration::LineLayout::updateInlineContentConstraints):
* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.h:
* Source/WebCore/rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::layoutInlineContent):

Canonical link: https://commits.webkit.org/284074@main



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list