Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 1fe3e43cf187f7c68b49b3c1e78addd856b94463
https://github.com/WebKit/WebKit/commit/1fe3e43cf187f7c68b49b3c1e78addd856b94463
Author: Alan Baradlay <[email protected]>
Date: 2022-11-12 (Sat, 12 Nov 2022)
Changed paths:
M LayoutTests/TestExpectations
M Source/WebCore/layout/FormattingState.cpp
M Source/WebCore/layout/FormattingState.h
M Source/WebCore/layout/LayoutState.cpp
M Source/WebCore/layout/LayoutState.h
M Source/WebCore/layout/floats/FloatingState.cpp
M Source/WebCore/layout/floats/FloatingState.h
M Source/WebCore/layout/formattingContexts/FormattingGeometry.cpp
M Source/WebCore/layout/formattingContexts/block/BlockFormattingState.cpp
M Source/WebCore/layout/formattingContexts/block/BlockFormattingState.h
M Source/WebCore/layout/formattingContexts/block/BlockLayoutState.h
M Source/WebCore/layout/formattingContexts/block/BlockMarginCollapse.cpp
M Source/WebCore/layout/formattingContexts/flex/FlexFormattingState.cpp
M Source/WebCore/layout/formattingContexts/flex/FlexFormattingState.h
M
Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.cpp
M Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.h
M Source/WebCore/layout/formattingContexts/inline/InlineFormattingState.cpp
M Source/WebCore/layout/formattingContexts/inline/InlineFormattingState.h
M Source/WebCore/layout/formattingContexts/table/TableFormattingState.cpp
M Source/WebCore/layout/formattingContexts/table/TableFormattingState.h
M Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp
M Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.h
M Source/WebCore/layout/layouttree/LayoutBox.cpp
Log Message:
-----------
[LFC][Floats] Float layout is BFC concept
https://bugs.webkit.org/show_bug.cgi?id=247821
Reviewed by Antti Koivisto.
Floats always belong to a block formatting context.
1. Only BlockFormattingState should instantiate a FloatingState (ICB in many
cases).
2. FloatingState should be pushed to the InlineFormattingContext as part of the
block layout state (instead of adding it to the InlineFormattingState).
3. When a block container establishes both BFC and IFC, we should not skip
instantiating the associated BFC (FIXME).
(The integration IFC codepath now explicitly creates the parent BFC state. This
is more inline with how the full LFC logic will look like.)
* Source/WebCore/layout/FormattingState.cpp:
(WebCore::Layout::FormattingState::FormattingState):
* Source/WebCore/layout/FormattingState.h:
(WebCore::Layout::FormattingState::floatingState const): Deleted.
* Source/WebCore/layout/LayoutState.cpp:
(WebCore::Layout::LayoutState::ensureInlineFormattingState):
(WebCore::Layout::LayoutState::ensureBlockFormattingState):
(WebCore::Layout::LayoutState::ensureTableFormattingState):
(WebCore::Layout::LayoutState::ensureFlexFormattingState):
* Source/WebCore/layout/floats/FloatingState.cpp:
(WebCore::Layout::FloatingState::FloatingState):
* Source/WebCore/layout/floats/FloatingState.h:
(WebCore::Layout::FloatingState::root const):
(WebCore::Layout::FloatingState::create): Deleted.
* Source/WebCore/layout/formattingContexts/FormattingGeometry.cpp:
(WebCore::Layout::FormattingGeometry::complicatedCases const):
* Source/WebCore/layout/formattingContexts/block/BlockFormattingState.cpp:
(WebCore::Layout::BlockFormattingState::BlockFormattingState):
* Source/WebCore/layout/formattingContexts/block/BlockFormattingState.h:
(WebCore::Layout::BlockFormattingState::floatingState const):
(WebCore::Layout::BlockFormattingState::floatingState):
* Source/WebCore/layout/formattingContexts/block/BlockLayoutState.h:
(WebCore::Layout::BlockLayoutState::floatingState):
(WebCore::Layout::BlockLayoutState::BlockLayoutState):
* Source/WebCore/layout/formattingContexts/block/BlockMarginCollapse.cpp:
(WebCore::Layout::BlockMarginCollapse::marginsCollapseThrough const):
* Source/WebCore/layout/formattingContexts/flex/FlexFormattingState.cpp:
(WebCore::Layout::FlexFormattingState::FlexFormattingState):
* Source/WebCore/layout/formattingContexts/flex/FlexFormattingState.h:
* Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::layoutInFlowContent):
(WebCore::Layout::InlineFormattingContext::layoutInFlowContentForIntegration):
(WebCore::Layout::InlineFormattingContext::usedContentHeight const):
(WebCore::Layout::InlineFormattingContext::lineLayout):
* Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.h:
* Source/WebCore/layout/formattingContexts/inline/InlineFormattingState.cpp:
(WebCore::Layout::InlineFormattingState::InlineFormattingState):
* Source/WebCore/layout/formattingContexts/inline/InlineFormattingState.h:
* Source/WebCore/layout/formattingContexts/table/TableFormattingState.cpp:
(WebCore::Layout::TableFormattingState::TableFormattingState):
* Source/WebCore/layout/formattingContexts/table/TableFormattingState.h:
* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp:
(WebCore::LayoutIntegration::LineLayout::LineLayout):
(WebCore::LayoutIntegration::LineLayout::layout):
(WebCore::LayoutIntegration::LineLayout::constructContent):
(WebCore::LayoutIntegration::LineLayout::prepareFloatingState):
* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.h:
Canonical link: https://commits.webkit.org/256609@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes