Changeset 238613 in webkit
- Timestamp:
- Nov 28, 2018 9:17:28 AM (5 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r238611 r238613 1 2018-11-28 Zalan Bujtas <zalan@apple.com> 2 3 [LFC][Quirk] Use non-collapsed vertical margin values when the container is stretched to the size of the ICB. 4 https://bugs.webkit.org/show_bug.cgi?id=192078 5 6 Reviewed by Antti Koivisto. 7 8 This quirk happens when the body height is 0 which means its vertical margins collapse through (top and bottom margins are adjoining). 9 However now that we stretch the body they don't collapse through anymore, so we need to use the non-collapsed values instead. 10 11 * layout/LayoutUnits.h: 12 (WebCore::Layout::HeightAndMargin::usedMarginValues const): 13 * layout/blockformatting/BlockFormattingContextGeometry.cpp: 14 (WebCore::Layout::stretchHeightToInitialContainingBlock): 15 1 16 2018-11-28 Zalan Bujtas <zalan@apple.com> 2 17 -
trunk/Source/WebCore/layout/LayoutUnits.h
r238482 r238613 107 107 108 108 struct HeightAndMargin { 109 VerticalEdges usedMarginValues() const { return collapsedMargin.value_or(margin); } 110 109 111 LayoutUnit height; 110 112 VerticalEdges margin; -
trunk/Source/WebCore/layout/blockformatting/BlockFormattingContextGeometry.cpp
r238481 r238613 59 59 } 60 60 61 static HeightAndMargin stretchHeightToInitialContainingBlock(HeightAndMargin heightAndMargin, LayoutUnit initialContainingBlockHeight) 62 { 63 auto verticalMargins = heightAndMargin.margin.top + heightAndMargin.margin.bottom; 61 static HeightAndMargin stretchHeightToInitialContainingBlockQuirk(HeightAndMargin heightAndMargin, LayoutUnit initialContainingBlockHeight) 62 { 63 // This quirk happens when the body height is 0 which means its vertical margins collapse through (top and bottom margins are adjoining). 64 // However now that we stretch the body they don't collapse through anymore, so we need to use the non-collapsed values instead. 65 ASSERT(initialContainingBlockHeight); 66 auto verticalMargins = heightAndMargin.height ? heightAndMargin.usedMarginValues() : heightAndMargin.margin; 67 auto totalVerticalMargins = verticalMargins.top + verticalMargins.bottom; 64 68 // Stretch but never overstretch with the margins. 65 if (heightAndMargin.height + verticalMargins < initialContainingBlockHeight)66 heightAndMargin.height = initialContainingBlockHeight - verticalMargins;69 if (heightAndMargin.height + totalVerticalMargins < initialContainingBlockHeight) 70 heightAndMargin.height = initialContainingBlockHeight - totalVerticalMargins; 67 71 68 72 return heightAndMargin; … … 311 315 312 316 auto initialContainingBlockHeight = layoutState.displayBoxForLayoutBox(initialContainingBlock(layoutBox)).contentBoxHeight(); 313 heightAndMargin = stretchHeightToInitialContainingBlock (heightAndMargin, initialContainingBlockHeight);317 heightAndMargin = stretchHeightToInitialContainingBlockQuirk(heightAndMargin, initialContainingBlockHeight); 314 318 315 319 LOG_WITH_STREAM(FormattingContextLayout, stream << "[Height][Margin] -> inflow non-replaced -> streched to viewport -> height(" << heightAndMargin.height << "px) margin(" << heightAndMargin.margin.top << "px, " << heightAndMargin.margin.bottom << "px) -> layoutBox(" << &layoutBox << ")"); -
trunk/Tools/ChangeLog
r238611 r238613 1 2018-11-28 Zalan Bujtas <zalan@apple.com> 2 3 [LFC][Quirk] Use non-collapsed vertical margin values when the container is stretched to the size of the ICB. 4 https://bugs.webkit.org/show_bug.cgi?id=192078 5 6 Reviewed by Antti Koivisto. 7 8 * LayoutReloaded/misc/LFC-passing-tests.txt: 9 1 10 2018-11-28 Zalan Bujtas <zalan@apple.com> 2 11 -
trunk/Tools/LayoutReloaded/misc/LFC-passing-tests.txt
r238611 r238613 97 97 fast/block/margin-collapse/002.html 98 98 fast/block/margin-collapse/003.html 99 fast/block/positioning/004.html 100 fast/block/positioning/005.html 101 fast/block/positioning/006.html 102 fast/block/positioning/007.html 103 fast/block/positioning/008.html 104 fast/block/positioning/009.html 105 fast/block/positioning/010.html 106 fast/block/positioning/011.html 107 fast/block/positioning/012.html 108 fast/block/positioning/013.html 109 fast/block/positioning/014.html 110 fast/block/positioning/015.html 111 fast/block/positioning/016.html 112 fast/block/positioning/017.html 113 fast/block/positioning/018.html 114 fast/block/positioning/019.html 115 fast/block/positioning/020.html 116 fast/block/positioning/021.html 117 fast/block/positioning/022.html 118 fast/block/positioning/023.html 119 fast/block/positioning/024.html 120 fast/block/positioning/025.html 121 fast/block/positioning/032.html 122 fast/block/positioning/033.html 123 fast/block/positioning/034.html 124 fast/block/positioning/035.html 125 fast/block/positioning/036.html 126 fast/block/positioning/037.html 127 fast/block/positioning/038.html 128 fast/block/positioning/039.html 129 fast/block/positioning/040.html 130 fast/block/positioning/041.html 131 fast/block/positioning/042.html 132 fast/block/positioning/043.html 133 fast/block/positioning/044.html 134 fast/block/positioning/045.html 135 fast/block/positioning/046.html 136 fast/block/positioning/049.html 137 fast/block/positioning/052.html 138 fast/block/positioning/054.html
Note: See TracChangeset
for help on using the changeset viewer.