WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-76864-20120123153529.patch (text/plain), 10.14 KB, created by
Ojan Vafai
on 2012-01-23 15:35:31 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Ojan Vafai
Created:
2012-01-23 15:35:31 PST
Size:
10.14 KB
patch
obsolete
>Subversion Revision: 105633 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 75349d25d7a4cc3ee2c37967cfbb2f0ad8ec3086..54d4619dc4adf146b729f445d4a6df3bd1b03d71 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,26 @@ >+2012-01-23 Ojan Vafai <ojan@chromium.org> >+ >+ Implement flex-pack:distribute >+ https://bugs.webkit.org/show_bug.cgi?id=76864 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ See http://dev.w3.org/csswg/css3-flexbox/#flex-pack. >+ >+ * css/CSSParser.cpp: >+ (WebCore::CSSParser::parseValue): >+ * css/CSSPrimitiveValueMappings.h: >+ (WebCore::CSSPrimitiveValue::CSSPrimitiveValue): >+ (WebCore::CSSPrimitiveValue::operator EFlexPack): >+ * css/CSSValueKeywords.in: >+ * rendering/RenderFlexibleBox.cpp: >+ (WebCore::initialPackingOffset): >+ (WebCore::packingSpaceBetweenChildren): >+ (WebCore::RenderFlexibleBox::layoutAndPlaceChildren): >+ (WebCore::RenderFlexibleBox::layoutColumnReverse): >+ * rendering/style/RenderStyleConstants.h: >+ * rendering/style/StyleFlexibleBoxData.h: >+ > 2012-01-23 Antti Koivisto <antti@apple.com> > > Attempt to fix Qt build. >diff --git a/Source/WebCore/css/CSSParser.cpp b/Source/WebCore/css/CSSParser.cpp >index 47ba1ee6f68c4d6412ef8e9fb25fe8ff466b37b9..3be734d87ab5fb63fc295b41a4da62b23c7b0c86 100644 >--- a/Source/WebCore/css/CSSParser.cpp >+++ b/Source/WebCore/css/CSSParser.cpp >@@ -1636,7 +1636,7 @@ bool CSSParser::parseValue(int propId, bool important) > } > break; > case CSSPropertyWebkitFlexPack: >- validPrimitive = id == CSSValueStart || id == CSSValueEnd || id == CSSValueCenter || id == CSSValueJustify; >+ validPrimitive = id == CSSValueStart || id == CSSValueEnd || id == CSSValueCenter || id == CSSValueJustify || id == CSSValueDistribute; > break; > case CSSPropertyWebkitFlexAlign: > validPrimitive = id == CSSValueStart || id == CSSValueEnd || id == CSSValueCenter || id == CSSValueBaseline || id == CSSValueStretch; >diff --git a/Source/WebCore/css/CSSPrimitiveValueMappings.h b/Source/WebCore/css/CSSPrimitiveValueMappings.h >index 3d47c8a8012a2e27c43dfd8036dce19ece3c7b8f..af54c79db7a360e56eefc1fcfca9be524aaec2b4 100644 >--- a/Source/WebCore/css/CSSPrimitiveValueMappings.h >+++ b/Source/WebCore/css/CSSPrimitiveValueMappings.h >@@ -1217,6 +1217,9 @@ template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EFlexPack e) > case PackJustify: > m_value.ident = CSSValueJustify; > break; >+ case PackDistribute: >+ m_value.ident = CSSValueDistribute; >+ break; > } > } > >@@ -1231,6 +1234,8 @@ template<> inline CSSPrimitiveValue::operator EFlexPack() const > return PackCenter; > case CSSValueJustify: > return PackJustify; >+ case CSSValueDistribute: >+ return PackDistribute; > default: > ASSERT_NOT_REACHED(); > return PackStart; >diff --git a/Source/WebCore/css/CSSValueKeywords.in b/Source/WebCore/css/CSSValueKeywords.in >index 931e57e46bdf42f8c60872ae50a5b9a0324d96df..fd10528861add84cfefee56e45f657cb4d4f2966 100644 >--- a/Source/WebCore/css/CSSValueKeywords.in >+++ b/Source/WebCore/css/CSSValueKeywords.in >@@ -492,6 +492,13 @@ multiple > // baseline > // stretch > >+// CSS_PROP_FLEX_PACK >+// start >+// end >+// center >+// justify >+distribute >+ > // CSS_PROP_FLEX_FLOW > row > row-reverse >diff --git a/Source/WebCore/rendering/RenderFlexibleBox.cpp b/Source/WebCore/rendering/RenderFlexibleBox.cpp >index 53997a12ba8e36306993045141d0670dc6566c02..21bd9bd4247a38b0844510582fd10498301c935f 100644 >--- a/Source/WebCore/rendering/RenderFlexibleBox.cpp >+++ b/Source/WebCore/rendering/RenderFlexibleBox.cpp >@@ -573,21 +573,27 @@ static bool hasPackingSpace(LayoutUnit availableFreeSpace, float totalPositiveFl > return availableFreeSpace > 0 && !totalPositiveFlexibility; > } > >-static LayoutUnit initialPackingOffset(LayoutUnit availableFreeSpace, float totalPositiveFlexibility, EFlexPack flexPack) >+static LayoutUnit initialPackingOffset(LayoutUnit availableFreeSpace, float totalPositiveFlexibility, EFlexPack flexPack, size_t numberOfChildren) > { > if (hasPackingSpace(availableFreeSpace, totalPositiveFlexibility)) { > if (flexPack == PackEnd) > return availableFreeSpace; > if (flexPack == PackCenter) > return availableFreeSpace / 2; >+ if (flexPack == PackDistribute && numberOfChildren) >+ return availableFreeSpace / (2 * numberOfChildren); > } > return 0; > } > > static LayoutUnit packingSpaceBetweenChildren(LayoutUnit availableFreeSpace, float totalPositiveFlexibility, EFlexPack flexPack, size_t numberOfChildren) > { >- if (hasPackingSpace(availableFreeSpace, totalPositiveFlexibility) && flexPack == PackJustify && numberOfChildren > 1) >- return availableFreeSpace / (numberOfChildren - 1); >+ if (hasPackingSpace(availableFreeSpace, totalPositiveFlexibility) && numberOfChildren > 1) { >+ if (flexPack == PackJustify) >+ return availableFreeSpace / (numberOfChildren - 1); >+ if (flexPack == PackDistribute) >+ return availableFreeSpace / numberOfChildren; >+ } > return 0; > } > >@@ -629,7 +635,7 @@ static EFlexAlign flexAlignForChild(RenderBox* child) > void RenderFlexibleBox::layoutAndPlaceChildren(FlexOrderIterator& iterator, const WTF::Vector<LayoutUnit>& childSizes, LayoutUnit availableFreeSpace, float totalPositiveFlexibility) > { > LayoutUnit mainAxisOffset = flowAwareBorderStart() + flowAwarePaddingStart(); >- mainAxisOffset += initialPackingOffset(availableFreeSpace, totalPositiveFlexibility, style()->flexPack()); >+ mainAxisOffset += initialPackingOffset(availableFreeSpace, totalPositiveFlexibility, style()->flexPack(), childSizes.size()); > > LayoutUnit crossAxisOffset = flowAwareBorderBefore() + flowAwarePaddingBefore(); > LayoutUnit totalMainExtent = mainAxisExtent(); >@@ -692,7 +698,7 @@ void RenderFlexibleBox::layoutColumnReverse(FlexOrderIterator& iterator, const W > // starting from the end of the flexbox. We also don't need to layout anything since we're > // just moving the children to a new position. > LayoutUnit mainAxisOffset = logicalHeight() - flowAwareBorderEnd() - flowAwarePaddingEnd(); >- mainAxisOffset -= initialPackingOffset(availableFreeSpace, totalPositiveFlexibility, style()->flexPack()); >+ mainAxisOffset -= initialPackingOffset(availableFreeSpace, totalPositiveFlexibility, style()->flexPack(), childSizes.size()); > > LayoutUnit crossAxisOffset = flowAwareBorderBefore() + flowAwarePaddingBefore(); > size_t i = 0; >diff --git a/Source/WebCore/rendering/style/RenderStyleConstants.h b/Source/WebCore/rendering/style/RenderStyleConstants.h >index 8109e3ee2c09861ccc42b9c57fa7013f6630e0f8..334ce233a130ea22c4f442980e79a0be7524b98e 100644 >--- a/Source/WebCore/rendering/style/RenderStyleConstants.h >+++ b/Source/WebCore/rendering/style/RenderStyleConstants.h >@@ -176,7 +176,7 @@ enum EBoxDirection { BNORMAL, BREVERSE }; > > // CSS3 Flexbox Properties > >-enum EFlexPack { PackStart, PackEnd, PackCenter, PackJustify }; >+enum EFlexPack { PackStart, PackEnd, PackCenter, PackJustify, PackDistribute }; > enum EFlexAlign { AlignAuto, AlignStart, AlignEnd, AlignCenter, AlignStretch, AlignBaseline }; > enum EFlexDirection { FlowRow, FlowRowReverse, FlowColumn, FlowColumnReverse }; > enum EFlexWrap { FlexNoWrap, FlexWrap, FlexWrapReverse }; >diff --git a/Source/WebCore/rendering/style/StyleFlexibleBoxData.h b/Source/WebCore/rendering/style/StyleFlexibleBoxData.h >index 840549b73a1fb8fa8fd09949b04b24102c60a0db..c3bf5c39a59d050133c7df592a2ec87014501952 100644 >--- a/Source/WebCore/rendering/style/StyleFlexibleBoxData.h >+++ b/Source/WebCore/rendering/style/StyleFlexibleBoxData.h >@@ -49,7 +49,7 @@ public: > > int m_flexOrder; > >- unsigned m_flexPack : 2; // EFlexPack >+ unsigned m_flexPack : 3; // EFlexPack > unsigned m_flexAlign : 3; // EFlexAlign > unsigned m_flexItemAlign : 3; // EFlexAlign > unsigned m_flexDirection : 2; // EFlexDirection >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 5e8fb688168638db3af232fdee4bafd116890d97..e0584686b4651f66ee52107429d900e29e14ed49 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,13 @@ >+2012-01-23 Ojan Vafai <ojan@chromium.org> >+ >+ Implement flex-pack:distribute >+ https://bugs.webkit.org/show_bug.cgi?id=76864 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * css3/flexbox/004-expected.txt: >+ * css3/flexbox/004.html: >+ > 2012-01-23 Adam Barth <abarth@webkit.org> > > Update the baselines for a number of tests that use gradients. The new >diff --git a/LayoutTests/css3/flexbox/004-expected.txt b/LayoutTests/css3/flexbox/004-expected.txt >index ca2cdd68c940a6760aa4f7752c4eeac7fa0b39b5..40f949f4c168917394b3f98ae21fd0da4562d064 100644 >--- a/LayoutTests/css3/flexbox/004-expected.txt >+++ b/LayoutTests/css3/flexbox/004-expected.txt >@@ -5,3 +5,6 @@ PASS > PASS > PASS > PASS >+PASS >+PASS >+PASS >diff --git a/LayoutTests/css3/flexbox/004.html b/LayoutTests/css3/flexbox/004.html >index 568806eb5cd528f59b6ff08da46666aa6854375a..0fe0747daed4b184a1b7cb84ce0ec9813ed568c7 100644 >--- a/LayoutTests/css3/flexbox/004.html >+++ b/LayoutTests/css3/flexbox/004.html >@@ -60,6 +60,20 @@ if (window.layoutTestController) > <div data-expected-width="100" data-offset-x="0" style="width: -webkit-flex(1 0 0); max-width: 100px;"></div> > </div> > >+<div class="flexbox" style="-webkit-flex-pack: distribute"> >+ <div data-expected-width="100" data-offset-x="50" style="width: -webkit-flex(1 0 0); max-width: 100px;"></div> >+ <div data-expected-width="100" data-offset-x="250" style="width: 100px;"></div> >+ <div data-expected-width="100" data-offset-x="450" style="width: 100px;"></div> >+</div> >+ >+<!-- If there's only one child, we pack center. --> >+<div class="flexbox" style="-webkit-flex-pack: distribute"> >+ <div data-expected-width="100" data-offset-x="250" style="width: -webkit-flex(1 0 0); max-width: 100px;"></div> >+</div> >+ >+<!-- Make sure we don't crash with no children. --> >+<div class="flexbox" style="-webkit-flex-pack: distribute"></div> >+ > <!-- margin:auto does nothing here. --> > <div class="flexbox" style="-webkit-flex-pack: end"> > <div data-expected-width="100" data-offset-x="300" style="width: 100px;"></div>
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 76864
:
123626
| 123637