Diff
Modified: trunk/LayoutTests/ChangeLog (146271 => 146272)
--- trunk/LayoutTests/ChangeLog 2013-03-19 22:30:31 UTC (rev 146271)
+++ trunk/LayoutTests/ChangeLog 2013-03-19 22:37:55 UTC (rev 146272)
@@ -1,3 +1,19 @@
+2013-03-18 Ojan Vafai <o...@chromium.org>
+
+ Make intrinsic size keywords on flexboxes work
+ https://bugs.webkit.org/show_bug.cgi?id=112652
+
+ Reviewed by Tony Chang.
+
+ * fast/css-intrinsic-dimensions/intrinsic-sized-column-flex-items-expected.txt: Added.
+ * fast/css-intrinsic-dimensions/intrinsic-sized-column-flex-items.html: Added.
+ * fast/css-intrinsic-dimensions/intrinsic-sized-flex-items-expected.txt: Added.
+ * fast/css-intrinsic-dimensions/intrinsic-sized-flex-items.html: Added.
+ * platform/chromium-linux/css3/flexbox/flexbox-baseline-expected.png:
+ * platform/chromium-win/css3/flexbox/flexbox-baseline-expected.txt:
+ This looks like a rounding difference. The new result matches the non-column result
+ in this same test, so it looks more correct to me.
+
2013-03-19 Dean Jackson <d...@apple.com>
Unreviewed. Skipping plugin snapshot tests temporarily to work out compositing issues.
Added: trunk/LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-column-flex-items-expected.txt (0 => 146272)
--- trunk/LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-column-flex-items-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-column-flex-items-expected.txt 2013-03-19 22:37:55 UTC (rev 146272)
@@ -0,0 +1,16 @@
+Tests intrinsic width values on flex-items.
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
Added: trunk/LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-column-flex-items.html (0 => 146272)
--- trunk/LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-column-flex-items.html (rev 0)
+++ trunk/LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-column-flex-items.html 2013-03-19 22:37:55 UTC (rev 146272)
@@ -0,0 +1,126 @@
+<!DOCTYPE html>
+<style>
+@import "resources/width-keyword-classes.css";
+
+.container {
+ border: 5px solid blue;
+ width: 250px;
+ height: 250px;
+ display: -webkit-flex;
+ display: flex;
+ -webkit-flex-direction: column;
+ flex-direction: column;
+}
+.child {
+ border: 5px solid pink;
+ -webkit-flex: none;
+ flex: none;
+ display: -webkit-flex;
+ display: flex;
+}
+.content {
+ display: inline-block;
+ width: 100px;
+ height: 100px;
+ background-color: salmon;
+}
+</style>
+
+Tests intrinsic width values on flex-items.
+
+<!-- width tests -->
+<div class="container">
+ <div class="child max-content" data-expected-width="210">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+
+<div class="container">
+ <div class="child min-content" data-expected-width="110">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+
+<div class="container">
+ <div class="child fit-content" data-expected-width="210">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+
+<div class="container" style="width: 50px">
+ <div class="child fit-content" data-expected-width="110">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+
+<div class="container">
+ <div class="child fill-available" data-expected-width="250">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+
+<!-- min-width tests -->
+<div class="container">
+ <div class="child min-width-max-content" style="width: 10px;" data-expected-width="210">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+<div class="container">
+ <div class="child min-width-min-content" style="width: 10px;" data-expected-width="110">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+
+<div class="container">
+ <div class="child min-width-fit-content" style="width: 10px;" data-expected-width="210">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+
+<div class="container" style="width: 50px">
+ <div class="child min-width-fit-content" style="width: 10px;" data-expected-width="110">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+
+<div class="container">
+ <div class="child min-width-fill-available" style="width: 10px;" data-expected-width="250">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+
+<!-- max-width tests -->
+<div class="container">
+ <div class="child max-width-max-content" style="width: 1000px; min-width: 0;" data-expected-width="210">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+
+<div class="container">
+ <div class="child max-width-min-content" style="width: 1000px; min-width: 0;" data-expected-width="110">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+
+<div class="container">
+ <div class="child max-width-fit-content" style="width: 1000px; min-width: 0;" data-expected-width="210">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+
+<div class="container" style="width: 50px">
+ <div class="child max-width-fit-content" style="width: 1000px; min-width: 0;" data-expected-width="110">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+
+<div class="container">
+ <div class="child max-width-fill-available" style="width: 1000px; min-width: 0;" data-expected-width="250">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+
+<script src=""
+<script>
+checkLayout(".container");
+</script>
Added: trunk/LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-flex-items-expected.txt (0 => 146272)
--- trunk/LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-flex-items-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-flex-items-expected.txt 2013-03-19 22:37:55 UTC (rev 146272)
@@ -0,0 +1,16 @@
+Tests intrinsic width values on flex-items.
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
Added: trunk/LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-flex-items.html (0 => 146272)
--- trunk/LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-flex-items.html (rev 0)
+++ trunk/LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-flex-items.html 2013-03-19 22:37:55 UTC (rev 146272)
@@ -0,0 +1,124 @@
+<!DOCTYPE html>
+<style>
+@import "resources/width-keyword-classes.css";
+
+.container {
+ border: 5px solid blue;
+ width: 250px;
+ height: 250px;
+ display: -webkit-flex;
+ display: flex;
+}
+.child {
+ border: 5px solid pink;
+ -webkit-flex: none;
+ flex: none;
+ display: -webkit-flex;
+ display: flex;
+}
+.content {
+ display: inline-block;
+ width: 100px;
+ height: 100px;
+ background-color: salmon;
+}
+</style>
+
+Tests intrinsic width values on flex-items.
+
+<!-- width tests -->
+<div class="container">
+ <div class="child max-content" data-expected-width="210">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+
+<div class="container">
+ <div class="child min-content" data-expected-width="110">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+
+<div class="container">
+ <div class="child fit-content" data-expected-width="210">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+
+<div class="container" style="width: 50px">
+ <div class="child fit-content" data-expected-width="110">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+
+<div class="container">
+ <div class="child fill-available" data-expected-width="250">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+
+<!-- min-width tests -->
+<div class="container">
+ <div class="child min-width-max-content" style="width: 10px;" data-expected-width="210">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+<div class="container">
+ <div class="child min-width-min-content" style="width: 10px;" data-expected-width="110">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+
+<div class="container">
+ <div class="child min-width-fit-content" style="width: 10px;" data-expected-width="210">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+
+<div class="container" style="width: 50px">
+ <div class="child min-width-fit-content" style="width: 10px;" data-expected-width="110">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+
+<div class="container">
+ <div class="child min-width-fill-available" style="width: 10px;" data-expected-width="250">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+
+<!-- max-width tests -->
+<div class="container">
+ <div class="child max-width-max-content" style="width: 1000px; min-width: 0;" data-expected-width="210">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+
+<div class="container">
+ <div class="child max-width-min-content" style="width: 1000px; min-width: 0;" data-expected-width="110">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+
+<div class="container">
+ <div class="child max-width-fit-content" style="width: 1000px; min-width: 0;" data-expected-width="210">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+
+<div class="container" style="width: 50px">
+ <div class="child max-width-fit-content" style="width: 1000px; min-width: 0;" data-expected-width="110">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+
+<div class="container">
+ <div class="child max-width-fill-available" style="width: 1000px; min-width: 0;" data-expected-width="250">
+ <div><div class="content"></div><div class="content"></div></div>
+ </div>
+</div>
+
+<script src=""
+<script>
+checkLayout(".container");
+</script>
Modified: trunk/LayoutTests/platform/chromium/TestExpectations (146271 => 146272)
--- trunk/LayoutTests/platform/chromium/TestExpectations 2013-03-19 22:30:31 UTC (rev 146271)
+++ trunk/LayoutTests/platform/chromium/TestExpectations 2013-03-19 22:37:55 UTC (rev 146272)
@@ -4410,6 +4410,8 @@
# Need rebaseline
webkit.org/b/110837 [ Mac ] fast/forms/color/input-appearance-color.html [ Failure ]
+Bug(ojan) [ Mac Win ] css3/flexbox/flexbox-baseline.html [ ImageOnlyFailure Failure ]
+
# Flaky tests
webkit.org/b/112598 [ Win Mac Linux ] http/tests/security/mixedContent/insecure-audio-video-in-main-frame.html [ Failure Pass ]
webkit.org/b/112601 http/tests/security/cross-frame-access-port-explicit-domain.html [ Failure Pass ]
Modified: trunk/LayoutTests/platform/chromium-linux/css3/flexbox/flexbox-baseline-expected.png
(Binary files differ)
Modified: trunk/LayoutTests/platform/chromium-win/css3/flexbox/flexbox-baseline-expected.txt (146271 => 146272)
--- trunk/LayoutTests/platform/chromium-win/css3/flexbox/flexbox-baseline-expected.txt 2013-03-19 22:30:31 UTC (rev 146271)
+++ trunk/LayoutTests/platform/chromium-win/css3/flexbox/flexbox-baseline-expected.txt 2013-03-19 22:37:55 UTC (rev 146272)
@@ -94,13 +94,13 @@
RenderText {#text} at (117,25) size 57x19
text run at (117,25) width 57: " after text"
RenderBlock {DIV} at (0,417) size 800x45
- RenderText {#text} at (0,11) size 169x19
- text run at (0,11) width 169: "should align with the middle "
+ RenderText {#text} at (0,10) size 169x19
+ text run at (0,10) width 169: "should align with the middle "
RenderFlexibleBox {DIV} at (169,5) size 40x40 [bgcolor=#D3D3D3]
RenderBlock {DIV} at (0,0) size 40x21 [border: none (1px solid #000000) none]
- RenderBlock {DIV} at (0,21) size 40x20
- RenderText {#text} at (209,11) size 116x19
- text run at (209,11) width 116: " of the grey flexbox"
+ RenderBlock {DIV} at (0,20) size 40x20
+ RenderText {#text} at (209,10) size 116x19
+ text run at (209,10) width 116: " of the grey flexbox"
RenderBlock {DIV} at (0,462) size 800x40
RenderText {#text} at (0,20) size 172x19
text run at (0,20) width 172: "should align with the bottom "
Modified: trunk/LayoutTests/platform/efl/TestExpectations (146271 => 146272)
--- trunk/LayoutTests/platform/efl/TestExpectations 2013-03-19 22:30:31 UTC (rev 146271)
+++ trunk/LayoutTests/platform/efl/TestExpectations 2013-03-19 22:37:55 UTC (rev 146272)
@@ -1851,6 +1851,8 @@
webkit.org/b/111058 plugins/plugin-clip-subframe.html [ Failure ]
+Bug(ojan) css3/flexbox/flexbox-baseline.html [ Failure ]
+
# Newly added tests in r144190 are failing.
webkit.org/b/111172 compositing/overlap-blending/children-opacity-huge.html [ ImageOnlyFailure ]
webkit.org/b/111172 compositing/overlap-blending/children-opacity-no-overlap.html [ ImageOnlyFailure ]
Modified: trunk/LayoutTests/platform/gtk/TestExpectations (146271 => 146272)
--- trunk/LayoutTests/platform/gtk/TestExpectations 2013-03-19 22:30:31 UTC (rev 146271)
+++ trunk/LayoutTests/platform/gtk/TestExpectations 2013-03-19 22:37:55 UTC (rev 146272)
@@ -1430,6 +1430,8 @@
webkit.org/b/111606 fast/borders/border-fit-2.html [ Failure ]
webkit.org/b/111606 fast/repaint/border-fit-lines.html [ Failure ]
+Bug(ojan) css3/flexbox/flexbox-baseline.html [ Failure ]
+
webkit.org/b/112109 fast/box-shadow/box-shadow-with-zero-radius.html [ ImageOnlyFailure ]
webkit.org/b/112110 media/track/track-cue-container-rendering-position.html [ Failure ]
Modified: trunk/LayoutTests/platform/mac/TestExpectations (146271 => 146272)
--- trunk/LayoutTests/platform/mac/TestExpectations 2013-03-19 22:30:31 UTC (rev 146271)
+++ trunk/LayoutTests/platform/mac/TestExpectations 2013-03-19 22:37:55 UTC (rev 146272)
@@ -1493,6 +1493,8 @@
webkit.org/b/111606 fast/borders/border-fit.html [ Failure Pass ]
webkit.org/b/111606 fast/repaint/border-fit-lines.html [ Failure Pass ]
+Bug(ojan) css3/flexbox/flexbox-baseline.html [ Failure ]
+
# Flakey
webkit.org/b/112533 media/auto-play-in-sandbox-with-allow-scripts.html [ Pass Failure ]
Modified: trunk/LayoutTests/platform/qt/TestExpectations (146271 => 146272)
--- trunk/LayoutTests/platform/qt/TestExpectations 2013-03-19 22:30:31 UTC (rev 146271)
+++ trunk/LayoutTests/platform/qt/TestExpectations 2013-03-19 22:37:55 UTC (rev 146272)
@@ -2687,6 +2687,8 @@
# Need support for ResourceHandle::didChangePriority and DRT support
webkit.org/b/111016 http/tests/loading/promote-img-preload-priority.html [ Failure ]
+Bug(ojan) css3/flexbox/flexbox-baseline.html [ Failure ]
+
# Border-fit should happen at layout time rather than paint time
webkit.org/b/111606 fast/borders/border-fit-2.html [ Skip ]
webkit.org/b/111606 fast/borders/border-fit.html [ Skip ]
Modified: trunk/Source/WebCore/ChangeLog (146271 => 146272)
--- trunk/Source/WebCore/ChangeLog 2013-03-19 22:30:31 UTC (rev 146271)
+++ trunk/Source/WebCore/ChangeLog 2013-03-19 22:37:55 UTC (rev 146272)
@@ -1,3 +1,33 @@
+2013-03-18 Ojan Vafai <o...@chromium.org>
+
+ Make intrinsic size keywords on flexboxes work
+ https://bugs.webkit.org/show_bug.cgi?id=112652
+
+ Reviewed by Tony Chang.
+
+ Tests: fast/css-intrinsic-dimensions/intrinsic-sized-column-flex-items.html
+ fast/css-intrinsic-dimensions/intrinsic-sized-flex-items.html
+
+ * platform/Length.h:
+ (WebCore::Length::isSpecifiedOrIntrinsic):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::constrainLogicalWidthInRegionByMinMax):
+ (WebCore::RenderBox::computeLogicalWidthInRegion):
+ (WebCore::RenderBox::computeLogicalWidthInRegionUsing):
+ Pass in the Length so that RenderFlexibleBox can call this method and avoid
+ doing a bunch of code duplication.
+
+ * rendering/RenderBox.h:
+ * rendering/RenderFlexibleBox.cpp:
+ (WebCore::RenderFlexibleBox::computeMainAxisExtentForChild):
+ Instead of just calling valueForLength, call computeLogicalWidthInRegionUsing so that
+ we properly resolve intrinsic Length types. Incidentally, this should also make viewport
+ percentage units work.
+
+ (WebCore::RenderFlexibleBox::adjustChildSizeForMinAndMax):
+ Resolve intrinsic min/max Lengths. Also, instead of calling minPreferredLogicalWidth for the
+ min-width: auto case, call computeMainAxisExtentForChild to correctly compute the min intrinsic size.
+
2013-03-19 Geoffrey Garen <gga...@apple.com>
Try to fix the Windows build.
Modified: trunk/Source/WebCore/platform/Length.h (146271 => 146272)
--- trunk/Source/WebCore/platform/Length.h 2013-03-19 22:30:31 UTC (rev 146271)
+++ trunk/Source/WebCore/platform/Length.h 2013-03-19 22:37:55 UTC (rev 146272)
@@ -223,6 +223,7 @@
bool isLegacyIntrinsic() const { return type() == Intrinsic || type() == MinIntrinsic; }
bool isIntrinsic() const { return type() == MinContent || type() == MaxContent || type() == FillAvailable || type() == FitContent; }
bool isSpecified() const { return type() == Fixed || type() == Percent || type() == Calculated || isViewportPercentage(); }
+ bool isSpecifiedOrIntrinsic() const { return isSpecified() || isIntrinsic(); }
bool isCalculated() const { return type() == Calculated; }
bool isCalculatedEqual(const Length&) const;
bool isMinContent() const { return type() == MinContent; }
Modified: trunk/Source/WebCore/rendering/RenderBox.cpp (146271 => 146272)
--- trunk/Source/WebCore/rendering/RenderBox.cpp 2013-03-19 22:30:31 UTC (rev 146271)
+++ trunk/Source/WebCore/rendering/RenderBox.cpp 2013-03-19 22:37:55 UTC (rev 146272)
@@ -481,8 +481,8 @@
{
RenderStyle* styleToUse = style();
if (!styleToUse->logicalMaxWidth().isUndefined())
- logicalWidth = min(logicalWidth, computeLogicalWidthInRegionUsing(MaxSize, availableWidth, cb, region, offsetFromLogicalTopOfFirstPage));
- return max(logicalWidth, computeLogicalWidthInRegionUsing(MinSize, availableWidth, cb, region, offsetFromLogicalTopOfFirstPage));
+ logicalWidth = min(logicalWidth, computeLogicalWidthInRegionUsing(MaxSize, styleToUse->logicalMaxWidth(), availableWidth, cb, region, offsetFromLogicalTopOfFirstPage));
+ return max(logicalWidth, computeLogicalWidthInRegionUsing(MinSize, styleToUse->logicalMinWidth(), availableWidth, cb, region, offsetFromLogicalTopOfFirstPage));
}
LayoutUnit RenderBox::constrainLogicalHeightByMinMax(LayoutUnit logicalHeight) const
@@ -2077,7 +2077,7 @@
LayoutUnit containerWidthInInlineDirection = containerLogicalWidth;
if (hasPerpendicularContainingBlock)
containerWidthInInlineDirection = perpendicularContainingBlockLogicalHeight();
- LayoutUnit preferredWidth = computeLogicalWidthInRegionUsing(MainOrPreferredSize, containerWidthInInlineDirection, cb, region, offsetFromLogicalTopOfFirstPage);
+ LayoutUnit preferredWidth = computeLogicalWidthInRegionUsing(MainOrPreferredSize, styleToUse->logicalWidth(), containerWidthInInlineDirection, cb, region, offsetFromLogicalTopOfFirstPage);
computedValues.m_extent = constrainLogicalWidthInRegionByMinMax(preferredWidth, containerWidthInInlineDirection, cb, region, offsetFromLogicalTopOfFirstPage);
}
@@ -2147,20 +2147,9 @@
return 0;
}
-LayoutUnit RenderBox::computeLogicalWidthInRegionUsing(SizeType widthType, LayoutUnit availableLogicalWidth,
+LayoutUnit RenderBox::computeLogicalWidthInRegionUsing(SizeType widthType, Length logicalWidth, LayoutUnit availableLogicalWidth,
const RenderBlock* cb, RenderRegion* region, LayoutUnit offsetFromLogicalTopOfFirstPage) const
{
- RenderStyle* styleToUse = style();
- Length logicalWidth;
- if (widthType == MainOrPreferredSize)
- logicalWidth = styleToUse->logicalWidth();
- else if (widthType == MinSize)
- logicalWidth = styleToUse->logicalMinWidth();
- else
- logicalWidth = styleToUse->logicalMaxWidth();
-
- ASSERT(!logicalWidth.isUndefined());
-
if (widthType == MinSize && logicalWidth.isAuto())
return adjustBorderBoxLogicalWidthForBoxSizing(0);
Modified: trunk/Source/WebCore/rendering/RenderBox.h (146271 => 146272)
--- trunk/Source/WebCore/rendering/RenderBox.h 2013-03-19 22:30:31 UTC (rev 146271)
+++ trunk/Source/WebCore/rendering/RenderBox.h 2013-03-19 22:37:55 UTC (rev 146272)
@@ -409,7 +409,7 @@
LayoutUnit shrinkLogicalWidthToAvoidFloats(LayoutUnit childMarginStart, LayoutUnit childMarginEnd, const RenderBlock* cb, RenderRegion*, LayoutUnit offsetFromLogicalTopOfFirstPage) const;
- LayoutUnit computeLogicalWidthInRegionUsing(SizeType, LayoutUnit availableLogicalWidth, const RenderBlock* containingBlock, RenderRegion*, LayoutUnit offsetFromLogicalTopOfFirstPage) const;
+ LayoutUnit computeLogicalWidthInRegionUsing(SizeType, Length, LayoutUnit availableLogicalWidth, const RenderBlock* containingBlock, RenderRegion*, LayoutUnit offsetFromLogicalTopOfFirstPage) const;
LayoutUnit computeLogicalHeightUsing(SizeType, const Length& height) const;
LayoutUnit computeContentLogicalHeight(SizeType, const Length& height) const;
LayoutUnit computeContentAndScrollbarLogicalHeightUsing(SizeType, const Length& height) const;
Modified: trunk/Source/WebCore/rendering/RenderFlexibleBox.cpp (146271 => 146272)
--- trunk/Source/WebCore/rendering/RenderFlexibleBox.cpp 2013-03-19 22:30:31 UTC (rev 146271)
+++ trunk/Source/WebCore/rendering/RenderFlexibleBox.cpp 2013-03-19 22:37:55 UTC (rev 146272)
@@ -536,7 +536,12 @@
// to figure out the logical height/width.
if (isColumnFlow())
return child->computeContentLogicalHeight(sizeType, size);
- return child->adjustContentBoxLogicalWidthForBoxSizing(valueForLength(size, contentLogicalWidth(), view()));
+ if (size.isAuto())
+ return -1;
+ // FIXME: Figure out how this should work for regions and pass in the appropriate values.
+ LayoutUnit offsetFromLogicalTopOfFirstPage = 0;
+ RenderRegion* region = 0;
+ return child->computeLogicalWidthInRegionUsing(sizeType, size, contentLogicalWidth(), this, region, offsetFromLogicalTopOfFirstPage) - child->borderAndPaddingLogicalWidth();
}
WritingMode RenderFlexibleBox::transformedWritingMode() const
@@ -921,9 +926,8 @@
LayoutUnit RenderFlexibleBox::adjustChildSizeForMinAndMax(RenderBox* child, LayoutUnit childSize)
{
- // FIXME: Support intrinsic min/max lengths.
Length max = isHorizontalFlow() ? child->style()->maxWidth() : child->style()->maxHeight();
- if (max.isSpecified()) {
+ if (max.isSpecifiedOrIntrinsic()) {
LayoutUnit maxExtent = computeMainAxisExtentForChild(child, MaxSize, max);
if (maxExtent != -1 && childSize > maxExtent)
childSize = maxExtent;
@@ -931,11 +935,13 @@
Length min = isHorizontalFlow() ? child->style()->minWidth() : child->style()->minHeight();
LayoutUnit minExtent = 0;
- if (min.isSpecified())
+ if (min.isSpecifiedOrIntrinsic())
minExtent = computeMainAxisExtentForChild(child, MinSize, min);
else if (min.isAuto()) {
- minExtent = hasOrthogonalFlow(child) ? child->logicalHeight() : child->minPreferredLogicalWidth();
- minExtent -= mainAxisBorderAndPaddingExtentForChild(child);
+ if (hasOrthogonalFlow(child))
+ minExtent = child->logicalHeight() - child->borderAndPaddingLogicalHeight();
+ else
+ minExtent = computeMainAxisExtentForChild(child, MinSize, Length(MinContent));
}
return std::max(childSize, minExtent);
}