Changeset 183748 in webkit
- Timestamp:
- May 4, 2015 10:25:21 AM (9 years ago)
- Location:
- trunk
- Files:
-
- 5 added
- 25 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r183739 r183748 1 2015-05-04 Javier Fernandez <jfernandez@igalia.com> 2 3 [CSS Box Alignment] Upgrade justify-content parsing to CSS3 Box Alignment spec. 4 https://bugs.webkit.org/show_bug.cgi?id=144442 5 6 Reviewed by David Hyatt. 7 8 Upgrade the justify-content property to the last CSS3 Box 9 Alignment specification. It defines a different enumeration for 10 Positional and Distribution alignment, which requires changes in 11 the FlexibleBox implementation. 12 13 Some minor changes in some Flexbox related test cases for adapting 14 them to the new parsing logic. New layout tests, not Flexbox 15 specific, to verify the parsing of the new values. 16 17 * css3/flexbox/css-properties.html: 18 * css3/parse-justify-content-expected.txt: Added. 19 * css3/parse-justify-content.html: Added. 20 1 21 2015-05-04 Manuel Rego Casasnovas <rego@igalia.com> 2 22 -
trunk/LayoutTests/css3/flexbox/css-properties.html
r182147 r183748 52 52 53 53 54 flexbox.style.display = '-webkit-flex'; 55 54 56 shouldBeEqualToString('flexbox.style.webkitJustifyContent', ''); 55 57 // The initial value is 'flex-start'. … … 78 80 shouldBeEqualToString('flexbox.style.webkitJustifyContent', ''); 79 81 shouldBeEqualToString('window.getComputedStyle(flexbox, null).webkitJustifyContent', 'flex-start'); 80 81 flexbox.style.display = '-webkit-flex';82 82 83 83 shouldBeEqualToString('flexbox.style.webkitAlignSelf', ''); -
trunk/LayoutTests/fast/css/getComputedStyle/computed-style-expected.txt
r182613 r183748 152 152 flex-direction: row; 153 153 flex-wrap: nowrap; 154 justify-content: flex-start;154 justify-content: start; 155 155 justify-self: start; 156 156 justify-items: start; -
trunk/LayoutTests/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt
r182613 r183748 151 151 flex-direction: row 152 152 flex-wrap: nowrap 153 justify-content: flex-start153 justify-content: auto 154 154 justify-self: auto 155 155 justify-items: auto -
trunk/LayoutTests/svg/css/getComputedStyle-basic-expected.txt
r182613 r183748 301 301 rect: style.getPropertyValue(flex-wrap) : nowrap 302 302 rect: style.getPropertyCSSValue(flex-wrap) : [object CSSPrimitiveValue] 303 rect: style.getPropertyValue(justify-content) : flex-start304 rect: style.getPropertyCSSValue(justify-content) : [object CSS PrimitiveValue]303 rect: style.getPropertyValue(justify-content) : start 304 rect: style.getPropertyCSSValue(justify-content) : [object CSSValueList] 305 305 rect: style.getPropertyValue(justify-self) : start 306 306 rect: style.getPropertyCSSValue(justify-self) : [object CSSValueList] … … 819 819 g: style.getPropertyValue(flex-wrap) : nowrap 820 820 g: style.getPropertyCSSValue(flex-wrap) : [object CSSPrimitiveValue] 821 g: style.getPropertyValue(justify-content) : flex-start822 g: style.getPropertyCSSValue(justify-content) : [object CSS PrimitiveValue]821 g: style.getPropertyValue(justify-content) : start 822 g: style.getPropertyCSSValue(justify-content) : [object CSSValueList] 823 823 g: style.getPropertyValue(justify-self) : start 824 824 g: style.getPropertyCSSValue(justify-self) : [object CSSValueList] -
trunk/Source/WebCore/CMakeLists.txt
r183618 r183748 1242 1242 css/CSSCharsetRule.cpp 1243 1243 css/CSSComputedStyleDeclaration.cpp 1244 css/CSSContentDistributionValue.cpp 1244 1245 css/CSSCrossfadeValue.cpp 1245 1246 css/CSSCursorImageValue.cpp -
trunk/Source/WebCore/ChangeLog
r183747 r183748 1 2015-05-04 Javier Fernandez <jfernandez@igalia.com> 2 3 [CSS Box Alignment] Upgrade justify-content parsing to CSS3 Box Alignment spec. 4 https://bugs.webkit.org/show_bug.cgi?id=144442 5 6 Reviewed by David Hyatt. 7 8 Upgrade the justify-content property to the last CSS3 Box 9 Alignment specification. It defines a different enumeration for 10 Positional and Distribution alignment, which requires changes in 11 the FlexibleBox implementation. 12 13 A new parsing function has been implemented to replace the basic 14 keyword IDs validation. Because of the complexity of the new 15 values, a new CSSPrimitiveValue derived class has been defined 16 which simplifies considerably the parsing logic. 17 18 We will follow the same approach than for Self Alignment, defining 19 a single class to hold all the related alignment data. This makes 20 possible to use a StyleBuilderConverter function instead of custom 21 builder functions for these properties. 22 23 Test: css3/parse-justify-content.html 24 25 * CMakeLists.txt: 26 * WebCore.xcodeproj/project.pbxproj: 27 * css/CSSComputedStyleDeclaration.cpp: 28 (WebCore::resolveContentAlignmentAuto): 29 (WebCore::valueForContentPositionAndDistributionWithOverflowAlignment): 30 (WebCore::ComputedStyleExtractor::propertyValue): 31 (WebCore::valueForItemPositionWithOverflowAlignment): Deleted. 32 * css/CSSContentDistributionValue.cpp: Added. 33 (WebCore::CSSContentDistributionValue::CSSContentDistributionValue): 34 (WebCore::CSSContentDistributionValue::~CSSContentDistributionValue): 35 (WebCore::CSSContentDistributionValue::customCSSText): 36 (WebCore::CSSContentDistributionValue::equals): 37 * css/CSSContentDistributionValue.h: Added. 38 (WebCore::CSSContentDistributionValue::create): 39 (WebCore::CSSContentDistributionValue::distribution): 40 (WebCore::CSSContentDistributionValue::position): 41 (WebCore::CSSContentDistributionValue::overflow): 42 * css/CSSParser.cpp: 43 (WebCore::isValidKeywordPropertyAndValue): 44 (WebCore::isKeywordPropertyID): 45 (WebCore::CSSParser::parseValue): 46 (WebCore::isContentDistributionKeyword): 47 (WebCore::isContentPositionKeyword): 48 (WebCore::isAlignmentOverflowKeyword): 49 (WebCore::CSSParser::parseContentDistributionOverflowPosition): 50 (WebCore::CSSParser::parseItemPositionOverflowPosition): 51 (WebCore::CSSParser::parseLegacyPosition): Deleted. 52 * css/CSSParser.h: 53 * css/CSSPrimitiveValueMappings.h: 54 (WebCore::CSSPrimitiveValue::CSSPrimitiveValue): 55 (WebCore::CSSPrimitiveValue::operator ContentPosition): 56 (WebCore::CSSPrimitiveValue::operator ContentDistributionType): 57 (WebCore::CSSPrimitiveValue::operator EFlexDirection): Deleted. 58 * css/CSSPropertyNames.in: 59 * css/CSSValue.cpp: 60 (WebCore::CSSValue::equals): 61 (WebCore::CSSValue::cssText): 62 (WebCore::CSSValue::destroy): 63 * css/CSSValue.h: 64 (WebCore::CSSValue::isContentDistributionValue): 65 (WebCore::CSSValue::isWebKitCSSFilterValue): Deleted. 66 * css/CSSValueKeywords.in: 67 * css/StyleBuilderConverter.h: 68 (WebCore::StyleBuilderConverter::convertContentAlignmentData): 69 (WebCore::StyleBuilderConverter::convertSelfOrDefaultAlignmentData): Deleted. 70 * rendering/RenderFlexibleBox.cpp: 71 (WebCore::initialJustifyContentOffset): 72 (WebCore::justifyContentSpaceBetweenChildren): 73 (WebCore::RenderFlexibleBox::layoutAndPlaceChildren): 74 (WebCore::RenderFlexibleBox::layoutColumnReverse): 75 * rendering/RenderFullScreen.cpp: 76 (WebCore::createFullScreenStyle): 77 * rendering/mathml/RenderMathMLScripts.cpp: 78 (WebCore::RenderMathMLScripts::fixAnonymousStyleForSubSupPair): 79 (WebCore::RenderMathMLScripts::fixAnonymousStyles): 80 * rendering/style/RenderStyle.h: 81 * rendering/style/RenderStyleConstants.h: 82 * rendering/style/StyleContentAlignmentData.h: Added. 83 (WebCore::StyleContentAlignmentData::StyleContentAlignmentData): 84 (WebCore::StyleContentAlignmentData::setPosition): 85 (WebCore::StyleContentAlignmentData::setDistribution): 86 (WebCore::StyleContentAlignmentData::setOverflow): 87 (WebCore::StyleContentAlignmentData::position): 88 (WebCore::StyleContentAlignmentData::distribution): 89 (WebCore::StyleContentAlignmentData::overflow): 90 (WebCore::StyleContentAlignmentData::operator==): 91 (WebCore::StyleContentAlignmentData::operator!=): 92 * rendering/style/StyleRareNonInheritedData.cpp: 93 (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData): 94 (WebCore::StyleRareNonInheritedData::operator==): 95 * rendering/style/StyleRareNonInheritedData.h: 96 1 97 2015-05-04 Per Arne Vollan <peavo@outlook.com> 2 98 -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r183618 r183748 3790 3790 9BF9A8811648DD2F001C6B23 /* JSHTMLFormControlsCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BF9A87F1648DD2F001C6B23 /* JSHTMLFormControlsCollection.h */; }; 3791 3791 9D6380101AF173220031A15C /* StyleSelfAlignmentData.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D63800F1AF16E160031A15C /* StyleSelfAlignmentData.h */; settings = {ATTRIBUTES = (Private, ); }; }; 3792 9DAC7C541AF2CAA100437C44 /* CSSContentDistributionValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9DAC7C521AF2CAA100437C44 /* CSSContentDistributionValue.cpp */; }; 3793 9DAC7C551AF2CAA200437C44 /* CSSContentDistributionValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DAC7C531AF2CAA100437C44 /* CSSContentDistributionValue.h */; }; 3794 9DAC7C571AF2CB6400437C44 /* StyleContentAlignmentData.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DAC7C561AF2CB6400437C44 /* StyleContentAlignmentData.h */; settings = {ATTRIBUTES = (Private, ); }; }; 3792 3795 9F72304F11184B4100AD0126 /* ScriptProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F72304C11184B4100AD0126 /* ScriptProfile.h */; settings = {ATTRIBUTES = (Private, ); }; }; 3793 3796 9FA37EE41172FC8000C4CD55 /* ScriptProfileNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FA37EE31172FC8000C4CD55 /* ScriptProfileNode.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 11079 11082 9BF9A87F1648DD2F001C6B23 /* JSHTMLFormControlsCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHTMLFormControlsCollection.h; sourceTree = "<group>"; }; 11080 11083 9D63800F1AF16E160031A15C /* StyleSelfAlignmentData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleSelfAlignmentData.h; path = style/StyleSelfAlignmentData.h; sourceTree = "<group>"; }; 11084 9DAC7C521AF2CAA100437C44 /* CSSContentDistributionValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSContentDistributionValue.cpp; sourceTree = "<group>"; }; 11085 9DAC7C531AF2CAA100437C44 /* CSSContentDistributionValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSContentDistributionValue.h; sourceTree = "<group>"; }; 11086 9DAC7C561AF2CB6400437C44 /* StyleContentAlignmentData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleContentAlignmentData.h; path = style/StyleContentAlignmentData.h; sourceTree = "<group>"; }; 11081 11087 9F72304C11184B4100AD0126 /* ScriptProfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptProfile.h; sourceTree = "<group>"; }; 11082 11088 9FA37EE31172FC8000C4CD55 /* ScriptProfileNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptProfileNode.h; sourceTree = "<group>"; }; … … 21377 21383 isa = PBXGroup; 21378 21384 children = ( 21385 9DAC7C561AF2CB6400437C44 /* StyleContentAlignmentData.h */, 21379 21386 9D63800F1AF16E160031A15C /* StyleSelfAlignmentData.h */, 21380 21387 FBD6AF8215EF21A3008B7110 /* BasicShapes.cpp */, … … 22335 22342 31BC742B1AAFF45C006B4340 /* CSSAnimationTriggerScrollValue.cpp */, 22336 22343 31BC742C1AAFF45C006B4340 /* CSSAnimationTriggerScrollValue.h */, 22344 9DAC7C521AF2CAA100437C44 /* CSSContentDistributionValue.cpp */, 22345 9DAC7C531AF2CAA100437C44 /* CSSContentDistributionValue.h */, 22337 22346 83520C7D1A71BFCC006BD2AA /* CSSFontFamily.h */, 22338 22347 FBD6AF8415EF21D4008B7110 /* BasicShapeFunctions.cpp */, … … 23994 24003 443818001A91B2F8006E04F2 /* CoreMediaSoftLink.h in Headers */, 23995 24004 7C9DBFEE1A9C49B1000D6B25 /* JSHTMLAttachmentElement.h in Headers */, 23996 9D6380101AF173220031A15C /* StyleSelfAlignmentData.h in Headers */,23997 24005 4449A4051A964B0000B64AD5 /* CoreMediaSPI.h in Headers */, 23998 24006 1C6466251A12C38E0094603C /* CoreTextSPI.h in Headers */, … … 24059 24067 A80E6CF90A1989CA007FB8C5 /* CSSCharsetRule.h in Headers */, 24060 24068 BCEA4790097CAAC80094C9E4 /* CSSComputedStyleDeclaration.h in Headers */, 24069 9DAC7C551AF2CAA200437C44 /* CSSContentDistributionValue.h in Headers */, 24061 24070 2D8FEBDD143E3EF70072502B /* CSSCrossfadeValue.h in Headers */, 24062 24071 AA21ECCD0ABF0FC6002B834C /* CSSCursorImageValue.h in Headers */, … … 26517 26526 BCEF444D0E674628001C1287 /* StyleCachedImage.h in Headers */, 26518 26527 9393E605151A9A1800066F06 /* StyleCachedImageSet.h in Headers */, 26528 9DAC7C571AF2CB6400437C44 /* StyleContentAlignmentData.h in Headers */, 26519 26529 BC5EB67F0E81D4A700B25965 /* StyleDashboardRegion.h in Headers */, 26520 26530 A8C4A7FD09D563270003AC8D /* StyledElement.h in Headers */, … … 26543 26553 E4946EAF156E64DD00D3297F /* StyleRuleImport.h in Headers */, 26544 26554 F47A5E3E195B8C8A00483100 /* StyleScrollSnapPoints.h in Headers */, 26555 9D6380101AF173220031A15C /* StyleSelfAlignmentData.h in Headers */, 26545 26556 A8EA800C0A19516E00A8EF5F /* StyleSheet.h in Headers */, 26546 26557 E4F9EEF3156DA00700D23E7E /* StyleSheetContents.h in Headers */, … … 27788 27799 E1EBBBD40AAC9B87001FE8E2 /* CSSCharsetRule.cpp in Sources */, 27789 27800 BCEA478F097CAAC80094C9E4 /* CSSComputedStyleDeclaration.cpp in Sources */, 27801 9DAC7C541AF2CAA100437C44 /* CSSContentDistributionValue.cpp in Sources */, 27790 27802 2D8FEBDC143E3EF70072502B /* CSSCrossfadeValue.cpp in Sources */, 27791 27803 AA21ECCA0ABF0FBA002B834C /* CSSCursorImageValue.cpp in Sources */, -
trunk/Source/WebCore/css/CSSAllInOne.cpp
r183466 r183748 33 33 #include "CSSCharsetRule.cpp" 34 34 #include "CSSComputedStyleDeclaration.cpp" 35 #include "CSSContentDistributionValue.cpp" 35 36 #include "CSSCrossfadeValue.cpp" 36 37 #include "CSSCursorImageValue.cpp" -
trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp
r183739 r183748 1718 1718 return position; 1719 1719 1720 bool isFlexOrGrid = element->style().isDisplayFlexibleOrGridBox(); 1721 return isFlexOrGrid ? ItemPositionStretch : ItemPositionStart; 1720 return element->style().isDisplayFlexibleOrGridBox() ? ItemPositionStretch : ItemPositionStart; 1722 1721 } 1723 1722 … … 1733 1732 overflow = parent->style().alignItemsOverflowAlignment(); 1734 1733 return resolveContainerAlignmentAuto(parent->style().alignItemsPosition(), parent); 1734 } 1735 1736 static ContentPosition resolveContentAlignmentAuto(ContentPosition position, ContentDistributionType distribution, RenderObject* element) 1737 { 1738 if (position != ContentPositionAuto || distribution != ContentDistributionDefault || !element) 1739 return position; 1740 1741 return element->style().isDisplayFlexibleBox() ? ContentPositionFlexStart : ContentPositionStart; 1735 1742 } 1736 1743 … … 1824 1831 result->append(cssValuePool().createValue(overflowAlignment)); 1825 1832 ASSERT(result->length() <= 2); 1833 return result.release(); 1834 } 1835 1836 static PassRefPtr<CSSValueList> valueForContentPositionAndDistributionWithOverflowAlignment(ContentPosition position, ContentDistributionType distribution, OverflowAlignment overflowAlignment) 1837 { 1838 RefPtr<CSSValueList> result = CSSValueList::createSpaceSeparated(); 1839 if (distribution != ContentDistributionDefault) 1840 result->append(CSSPrimitiveValue::create(distribution)); 1841 if (distribution == ContentDistributionDefault || position != ContentPositionAuto) 1842 result->append(CSSPrimitiveValue::create(position)); 1843 if ((position >= ContentPositionCenter || distribution != ContentDistributionDefault) && overflowAlignment != OverflowAlignmentDefault) 1844 result->append(CSSPrimitiveValue::create(overflowAlignment)); 1845 ASSERT(result->length() > 0); 1846 ASSERT(result->length() <= 3); 1826 1847 return result.release(); 1827 1848 } … … 2211 2232 return cssValuePool().createValue(style->flexWrap()); 2212 2233 case CSSPropertyJustifyContent: 2213 return cssValuePool().createValue(style->justifyContent());2234 return valueForContentPositionAndDistributionWithOverflowAlignment(resolveContentAlignmentAuto(style->justifyContentPosition(), style->justifyContentDistribution(), renderer), style->justifyContentDistribution(), style->justifyContentOverflowAlignment()); 2214 2235 case CSSPropertyJustifyItems: 2215 2236 return valueForItemPositionWithOverflowAlignment(resolveContainerAlignmentAuto(style->justifyItemsPosition(), renderer), style->justifyItemsOverflowAlignment(), style->justifyItemsPositionType()); -
trunk/Source/WebCore/css/CSSParser.cpp
r183610 r183748 34 34 #include "CSSBorderImage.h" 35 35 #include "CSSCanvasValue.h" 36 #include "CSSContentDistributionValue.h" 36 37 #include "CSSCrossfadeValue.h" 37 38 #include "CSSCursorImageValue.h" … … 892 893 if (valueID == CSSValueNowrap || valueID == CSSValueWrap || valueID == CSSValueWrapReverse) 893 894 return true; 894 break;895 case CSSPropertyJustifyContent:896 // FIXME: Per CSS alignment, this property should accept an optional <overflow-position>. We should share this parsing code with 'justify-self'.897 if (valueID == CSSValueFlexStart || valueID == CSSValueFlexEnd || valueID == CSSValueCenter || valueID == CSSValueSpaceBetween || valueID == CSSValueSpaceAround)898 return true;899 895 break; 900 896 case CSSPropertyWebkitFontKerning: … … 1129 1125 case CSSPropertyFlexDirection: 1130 1126 case CSSPropertyFlexWrap: 1131 case CSSPropertyJustifyContent:1132 1127 case CSSPropertyWebkitFontKerning: 1133 1128 case CSSPropertyWebkitFontSmoothing: … … 2714 2709 return false; 2715 2710 } 2711 case CSSPropertyJustifyContent: 2712 parsedValue = parseContentDistributionOverflowPosition(); 2713 break; 2716 2714 case CSSPropertyJustifySelf: 2717 2715 return parseItemPositionOverflowPosition(propId, important); … … 3120 3118 case CSSPropertyFlexDirection: 3121 3119 case CSSPropertyFlexWrap: 3122 case CSSPropertyJustifyContent:3123 3120 case CSSPropertyWebkitFontKerning: 3124 3121 case CSSPropertyWebkitFontSmoothing: … … 3233 3230 } 3234 3231 3232 static bool isContentDistributionKeyword(CSSValueID id) 3233 { 3234 return id == CSSValueSpaceBetween || id == CSSValueSpaceAround 3235 || id == CSSValueSpaceEvenly || id == CSSValueStretch; 3236 } 3237 3238 static bool isContentPositionKeyword(CSSValueID id) 3239 { 3240 return id == CSSValueStart || id == CSSValueEnd || id == CSSValueCenter 3241 || id == CSSValueFlexStart || id == CSSValueFlexEnd 3242 || id == CSSValueLeft || id == CSSValueRight; 3243 } 3244 3235 3245 static inline bool isBaselinePositionKeyword(CSSValueID id) 3236 3246 { 3237 3247 return id == CSSValueBaseline || id == CSSValueLastBaseline; 3248 } 3249 3250 static bool isAlignmentOverflowKeyword(CSSValueID id) 3251 { 3252 return id == CSSValueTrue || id == CSSValueSafe; 3238 3253 } 3239 3254 … … 3269 3284 } 3270 3285 3286 PassRefPtr<CSSValue> CSSParser::parseContentDistributionOverflowPosition() 3287 { 3288 // auto | <baseline-position> | <content-distribution> || [ <overflow-position>? && <content-position> ] 3289 // <baseline-position> = baseline | last-baseline; 3290 // <content-distribution> = space-between | space-around | space-evenly | stretch; 3291 // <content-position> = center | start | end | flex-start | flex-end | left | right; 3292 // <overflow-position> = true | safe 3293 3294 CSSParserValue* value = m_valueList->current(); 3295 if (!value) 3296 return nullptr; 3297 3298 // auto | <baseline-position> 3299 if (value->id == CSSValueAuto || isBaselinePositionKeyword(value->id)) { 3300 m_valueList->next(); 3301 return CSSContentDistributionValue::create(CSSValueInvalid, value->id, CSSValueInvalid); 3302 } 3303 3304 CSSValueID distribution = CSSValueInvalid; 3305 CSSValueID position = CSSValueInvalid; 3306 CSSValueID overflow = CSSValueInvalid; 3307 while (value) { 3308 if (isContentDistributionKeyword(value->id)) { 3309 if (distribution != CSSValueInvalid) 3310 return nullptr; 3311 distribution = value->id; 3312 } else if (isContentPositionKeyword(value->id)) { 3313 if (position != CSSValueInvalid) 3314 return nullptr; 3315 position = value->id; 3316 } else if (isAlignmentOverflowKeyword(value->id)) { 3317 if (overflow != CSSValueInvalid) 3318 return nullptr; 3319 overflow = value->id; 3320 } else 3321 return nullptr; 3322 value = m_valueList->next(); 3323 } 3324 3325 // The grammar states that we should have at least <content-distribution> or 3326 // <content-position> ( <content-distribution> || <content-position> ). 3327 if (position == CSSValueInvalid && distribution == CSSValueInvalid) 3328 return nullptr; 3329 3330 // The grammar states that <overflow-position> must be associated to <content-position>. 3331 if (overflow != CSSValueInvalid && position == CSSValueInvalid) 3332 return nullptr; 3333 3334 return CSSContentDistributionValue::create(distribution, position, overflow); 3335 } 3336 3271 3337 bool CSSParser::parseItemPositionOverflowPosition(CSSPropertyID propId, bool important) 3272 3338 { … … 3298 3364 overflowAlignmentKeyword = cssValuePool().createIdentifierValue(value->id); 3299 3365 } 3300 } else if (value->id != CSSValueTrue && value->id != CSSValueSafe) 3301 return false; 3302 else { 3366 } else if (isAlignmentOverflowKeyword(value->id)) { 3303 3367 overflowAlignmentKeyword = cssValuePool().createIdentifierValue(value->id); 3304 3368 value = m_valueList->next(); … … 3307 3371 else 3308 3372 return false; 3309 } 3373 } else 3374 return false; 3310 3375 3311 3376 if (m_valueList->next()) -
trunk/Source/WebCore/css/CSSParser.h
r183610 r183748 232 232 bool parseLegacyPosition(CSSPropertyID, bool important); 233 233 bool parseItemPositionOverflowPosition(CSSPropertyID, bool important); 234 PassRefPtr<CSSValue> parseContentDistributionOverflowPosition(); 234 235 235 236 #if ENABLE(CSS_SHAPES) -
trunk/Source/WebCore/css/CSSPrimitiveValueMappings.h
r183442 r183748 1437 1437 ASSERT_NOT_REACHED(); 1438 1438 return SHOW; 1439 }1440 1441 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EJustifyContent e)1442 : CSSValue(PrimitiveClass)1443 {1444 m_primitiveUnitType = CSS_VALUE_ID;1445 switch (e) {1446 case JustifyFlexStart:1447 m_value.valueID = CSSValueFlexStart;1448 break;1449 case JustifyFlexEnd:1450 m_value.valueID = CSSValueFlexEnd;1451 break;1452 case JustifyCenter:1453 m_value.valueID = CSSValueCenter;1454 break;1455 case JustifySpaceBetween:1456 m_value.valueID = CSSValueSpaceBetween;1457 break;1458 case JustifySpaceAround:1459 m_value.valueID = CSSValueSpaceAround;1460 break;1461 }1462 }1463 1464 template<> inline CSSPrimitiveValue::operator EJustifyContent() const1465 {1466 ASSERT(isValueID());1467 1468 switch (m_value.valueID) {1469 case CSSValueFlexStart:1470 return JustifyFlexStart;1471 case CSSValueFlexEnd:1472 return JustifyFlexEnd;1473 case CSSValueCenter:1474 return JustifyCenter;1475 case CSSValueSpaceBetween:1476 return JustifySpaceBetween;1477 case CSSValueSpaceAround:1478 return JustifySpaceAround;1479 default:1480 break;1481 }1482 1483 ASSERT_NOT_REACHED();1484 return JustifyFlexStart;1485 1439 } 1486 1440 … … 5187 5141 } 5188 5142 5143 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ContentPosition contentPosition) 5144 : CSSValue(PrimitiveClass) 5145 { 5146 m_primitiveUnitType = CSS_VALUE_ID; 5147 switch (contentPosition) { 5148 case ContentPositionAuto: 5149 m_value.valueID = CSSValueAuto; 5150 break; 5151 case ContentPositionBaseline: 5152 m_value.valueID = CSSValueBaseline; 5153 break; 5154 case ContentPositionLastBaseline: 5155 m_value.valueID = CSSValueLastBaseline; 5156 break; 5157 case ContentPositionCenter: 5158 m_value.valueID = CSSValueCenter; 5159 break; 5160 case ContentPositionStart: 5161 m_value.valueID = CSSValueStart; 5162 break; 5163 case ContentPositionEnd: 5164 m_value.valueID = CSSValueEnd; 5165 break; 5166 case ContentPositionFlexStart: 5167 m_value.valueID = CSSValueFlexStart; 5168 break; 5169 case ContentPositionFlexEnd: 5170 m_value.valueID = CSSValueFlexEnd; 5171 break; 5172 case ContentPositionLeft: 5173 m_value.valueID = CSSValueLeft; 5174 break; 5175 case ContentPositionRight: 5176 m_value.valueID = CSSValueRight; 5177 break; 5178 } 5179 } 5180 5181 template<> inline CSSPrimitiveValue::operator ContentPosition() const 5182 { 5183 switch (m_value.valueID) { 5184 case CSSValueAuto: 5185 return ContentPositionAuto; 5186 case CSSValueBaseline: 5187 return ContentPositionBaseline; 5188 case CSSValueLastBaseline: 5189 return ContentPositionLastBaseline; 5190 case CSSValueCenter: 5191 return ContentPositionCenter; 5192 case CSSValueStart: 5193 return ContentPositionStart; 5194 case CSSValueEnd: 5195 return ContentPositionEnd; 5196 case CSSValueFlexStart: 5197 return ContentPositionFlexStart; 5198 case CSSValueFlexEnd: 5199 return ContentPositionFlexEnd; 5200 case CSSValueLeft: 5201 return ContentPositionLeft; 5202 case CSSValueRight: 5203 return ContentPositionRight; 5204 default: 5205 break; 5206 } 5207 ASSERT_NOT_REACHED(); 5208 return ContentPositionAuto; 5209 } 5210 5211 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ContentDistributionType contentDistribution) 5212 : CSSValue(PrimitiveClass) 5213 { 5214 m_primitiveUnitType = CSS_VALUE_ID; 5215 switch (contentDistribution) { 5216 case ContentDistributionDefault: 5217 m_value.valueID = CSSValueDefault; 5218 break; 5219 case ContentDistributionSpaceBetween: 5220 m_value.valueID = CSSValueSpaceBetween; 5221 break; 5222 case ContentDistributionSpaceAround: 5223 m_value.valueID = CSSValueSpaceAround; 5224 break; 5225 case ContentDistributionSpaceEvenly: 5226 m_value.valueID = CSSValueSpaceEvenly; 5227 break; 5228 case ContentDistributionStretch: 5229 m_value.valueID = CSSValueStretch; 5230 break; 5231 } 5232 } 5233 5234 template<> inline CSSPrimitiveValue::operator ContentDistributionType() const 5235 { 5236 switch (m_value.valueID) { 5237 case CSSValueSpaceBetween: 5238 return ContentDistributionSpaceBetween; 5239 case CSSValueSpaceAround: 5240 return ContentDistributionSpaceAround; 5241 case CSSValueSpaceEvenly: 5242 return ContentDistributionSpaceEvenly; 5243 case CSSValueStretch: 5244 return ContentDistributionStretch; 5245 default: 5246 break; 5247 } 5248 ASSERT_NOT_REACHED(); 5249 return ContentDistributionStretch; 5250 } 5189 5251 5190 5252 #if ENABLE(CSS_SCROLL_SNAP) -
trunk/Source/WebCore/css/CSSPropertyNames.in
r183591 r183748 474 474 flex-wrap 475 475 -webkit-flex-wrap = flex-wrap 476 justify-content 476 justify-content [Initial=initialContentAlignment, Converter=ContentAlignmentData] 477 477 -webkit-justify-content = justify-content 478 478 #if defined(ENABLE_FILTERS_LEVEL_2) && ENABLE_FILTERS_LEVEL_2 -
trunk/Source/WebCore/css/CSSValue.cpp
r181602 r183748 34 34 #include "CSSCalculationValue.h" 35 35 #include "CSSCanvasValue.h" 36 #include "CSSContentDistributionValue.h" 36 37 #include "CSSCrossfadeValue.h" 37 38 #include "CSSCursorImageValue.h" … … 232 233 return compareCSSValues<CSSAnimationTriggerScrollValue>(*this, other); 233 234 #endif 235 case CSSContentDistributionClass: 236 return compareCSSValues<CSSContentDistributionValue>(*this, other); 234 237 default: 235 238 ASSERT_NOT_REACHED(); … … 324 327 case WebKitCSSResourceClass: 325 328 return downcast<WebKitCSSResourceValue>(*this).customCSSText(); 329 case CSSContentDistributionClass: 330 return downcast<CSSContentDistributionValue>(*this).customCSSText(); 326 331 } 327 332 ASSERT_NOT_REACHED(); … … 443 448 case WebKitCSSResourceClass: 444 449 delete downcast<WebKitCSSResourceValue>(this); 450 return; 451 case CSSContentDistributionClass: 452 delete downcast<CSSContentDistributionValue>(this); 445 453 return; 446 454 } -
trunk/Source/WebCore/css/CSSValue.h
r181602 r183748 97 97 bool isFilterImageValue() const { return m_classType == FilterImageClass; } 98 98 bool isWebKitCSSFilterValue() const { return m_classType == WebKitCSSFilterClass; } 99 bool isContentDistributionValue() const { return m_classType == CSSContentDistributionClass; } 99 100 #if ENABLE(CSS_GRID_LAYOUT) 100 101 bool isGridTemplateAreasValue() const { return m_classType == GridTemplateAreasClass; } … … 173 174 AnimationTriggerScrollClass, 174 175 #endif 176 177 CSSContentDistributionClass, 175 178 176 179 // List class types must appear after ValueListClass. -
trunk/Source/WebCore/css/CSSValueKeywords.in
r183610 r183748 546 546 space-between 547 547 space-around 548 space-evenly 548 549 // stretch 549 550 … … 557 558 558 559 // CSS_PROP_JUSTIFY_CONTENT 560 // start 561 // end 559 562 // flex-start 560 563 // flex-end … … 562 565 // space-between 563 566 // space-around 567 // space-evenly 568 // stretch 564 569 565 570 // CSS_PROP_JUSTIFY_ITEMS / CSS_PROP_JUSTIFY_SELF -
trunk/Source/WebCore/css/StyleBuilderConverter.h
r183591 r183748 30 30 #include "BasicShapeFunctions.h" 31 31 #include "CSSCalculationValue.h" 32 #include "CSSContentDistributionValue.h" 32 33 #include "CSSFontFeatureValue.h" 33 34 #include "CSSFunctionValue.h" … … 123 124 static Color convertSVGColor(StyleResolver&, CSSValue&); 124 125 static StyleSelfAlignmentData convertSelfOrDefaultAlignmentData(StyleResolver&, CSSValue&); 126 static StyleContentAlignmentData convertContentAlignmentData(StyleResolver&, CSSValue&); 125 127 static EGlyphOrientation convertGlyphOrientation(StyleResolver&, CSSValue&); 126 128 static EGlyphOrientation convertGlyphOrientationOrAuto(StyleResolver&, CSSValue&); … … 1189 1191 } 1190 1192 1193 inline StyleContentAlignmentData StyleBuilderConverter::convertContentAlignmentData(StyleResolver&, CSSValue& value) 1194 { 1195 StyleContentAlignmentData alignmentData = RenderStyle::initialContentAlignment(); 1196 auto& contentValue = downcast<CSSContentDistributionValue>(value); 1197 if (contentValue.distribution()->getValueID() != CSSValueInvalid) 1198 alignmentData.setDistribution(contentValue.distribution().get()); 1199 if (contentValue.position()->getValueID() != CSSValueInvalid) 1200 alignmentData.setPosition(contentValue.position().get()); 1201 if (contentValue.overflow()->getValueID() != CSSValueInvalid) 1202 alignmentData.setOverflow(contentValue.overflow().get()); 1203 return alignmentData; 1204 } 1205 1191 1206 inline EGlyphOrientation StyleBuilderConverter::convertGlyphOrientation(StyleResolver&, CSSValue& value) 1192 1207 { -
trunk/Source/WebCore/rendering/RenderFlexibleBox.cpp
r183591 r183748 959 959 } 960 960 961 static LayoutUnit initialJustifyContentOffset(LayoutUnit availableFreeSpace, EJustifyContent justifyContent, unsigned numberOfChildren)962 { 963 if (justifyContent == JustifyFlexEnd)961 static LayoutUnit initialJustifyContentOffset(LayoutUnit availableFreeSpace, ContentPosition justifyContent, ContentDistributionType justifyContentDistribution, unsigned numberOfChildren) 962 { 963 if (justifyContent == ContentPositionFlexEnd) 964 964 return availableFreeSpace; 965 if (justifyContent == JustifyCenter)965 if (justifyContent == ContentPositionCenter) 966 966 return availableFreeSpace / 2; 967 if (justifyContent == JustifySpaceAround) {967 if (justifyContentDistribution == ContentDistributionSpaceAround) { 968 968 if (availableFreeSpace > 0 && numberOfChildren) 969 969 return availableFreeSpace / (2 * numberOfChildren); … … 974 974 } 975 975 976 static LayoutUnit justifyContentSpaceBetweenChildren(LayoutUnit availableFreeSpace, EJustifyContent justifyContent, unsigned numberOfChildren)976 static LayoutUnit justifyContentSpaceBetweenChildren(LayoutUnit availableFreeSpace, ContentDistributionType justifyContentDistribution, unsigned numberOfChildren) 977 977 { 978 978 if (availableFreeSpace > 0 && numberOfChildren > 1) { 979 if (justifyContent == JustifySpaceBetween)979 if (justifyContentDistribution == ContentDistributionSpaceBetween) 980 980 return availableFreeSpace / (numberOfChildren - 1); 981 if (justifyContent == JustifySpaceAround)981 if (justifyContentDistribution == ContentDistributionSpaceAround) 982 982 return availableFreeSpace / numberOfChildren; 983 983 } … … 1061 1061 LayoutUnit autoMarginOffset = autoMarginOffsetInMainAxis(children, availableFreeSpace); 1062 1062 LayoutUnit mainAxisOffset = flowAwareBorderStart() + flowAwarePaddingStart(); 1063 mainAxisOffset += initialJustifyContentOffset(availableFreeSpace, style().justifyContent (), numberOfChildrenForJustifyContent);1063 mainAxisOffset += initialJustifyContentOffset(availableFreeSpace, style().justifyContentPosition(), style().justifyContentDistribution(), numberOfChildrenForJustifyContent); 1064 1064 if (style().flexDirection() == FlowRowReverse) 1065 1065 mainAxisOffset += isHorizontalFlow() ? verticalScrollbarWidth() : horizontalScrollbarHeight(); … … 1118 1118 ++seenInFlowPositionedChildren; 1119 1119 if (seenInFlowPositionedChildren < numberOfChildrenForJustifyContent) 1120 mainAxisOffset += justifyContentSpaceBetweenChildren(availableFreeSpace, style().justifyContent (), numberOfChildrenForJustifyContent);1120 mainAxisOffset += justifyContentSpaceBetweenChildren(availableFreeSpace, style().justifyContentDistribution(), numberOfChildrenForJustifyContent); 1121 1121 } 1122 1122 … … 1144 1144 size_t numberOfChildrenForJustifyContent = numberOfInFlowPositionedChildren(children); 1145 1145 LayoutUnit mainAxisOffset = logicalHeight() - flowAwareBorderEnd() - flowAwarePaddingEnd(); 1146 mainAxisOffset -= initialJustifyContentOffset(availableFreeSpace, style().justifyContent (), numberOfChildrenForJustifyContent);1146 mainAxisOffset -= initialJustifyContentOffset(availableFreeSpace, style().justifyContentPosition(), style().justifyContentDistribution(), numberOfChildrenForJustifyContent); 1147 1147 mainAxisOffset -= isHorizontalFlow() ? verticalScrollbarWidth() : horizontalScrollbarHeight(); 1148 1148 … … 1162 1162 ++seenInFlowPositionedChildren; 1163 1163 if (seenInFlowPositionedChildren < numberOfChildrenForJustifyContent) 1164 mainAxisOffset -= justifyContentSpaceBetweenChildren(availableFreeSpace, style().justifyContent (), numberOfChildrenForJustifyContent);1164 mainAxisOffset -= justifyContentSpaceBetweenChildren(availableFreeSpace, style().justifyContentDistribution(), numberOfChildrenForJustifyContent); 1165 1165 } 1166 1166 } -
trunk/Source/WebCore/rendering/RenderFullScreen.cpp
r183591 r183748 90 90 91 91 fullscreenStyle.get().setDisplay(FLEX); 92 fullscreenStyle.get().setJustifyContent (JustifyCenter);92 fullscreenStyle.get().setJustifyContentPosition(ContentPositionCenter); 93 93 fullscreenStyle.get().setAlignItemsPosition(ItemPositionCenter); 94 94 fullscreenStyle.get().setFlexDirection(FlowColumn); -
trunk/Source/WebCore/rendering/mathml/RenderMathMLScripts.cpp
r183591 r183748 96 96 // the flex container. Note that for valid <msub> and <msup> elements, the 97 97 // subSupPair should actually have only one script. 98 scriptsStyle.setJustifyContent(m_kind == Sub ? JustifyFlexStart : m_kind == Super ? JustifyFlexEnd : JustifySpaceBetween); 98 if (m_kind == Sub) 99 scriptsStyle.setJustifyContentPosition(ContentPositionFlexStart); 100 else if (m_kind == Super) 101 scriptsStyle.setJustifyContentPosition(ContentPositionFlexEnd); 102 else 103 scriptsStyle.setJustifyContentDistribution(ContentDistributionSpaceBetween); 99 104 100 105 // The MathML specification does not specify vertical alignment of scripts. … … 134 139 RenderStyle& scriptsStyle = subSupPair->style(); 135 140 scriptsStyle.setFlexDirection(FlowRow); 136 scriptsStyle.setJustifyContent (JustifyFlexStart);141 scriptsStyle.setJustifyContentPosition(ContentPositionFlexStart); 137 142 scriptsStyle.setAlignItemsPosition(ItemPositionCenter); 138 143 scriptsStyle.setOrder(0); -
trunk/Source/WebCore/rendering/style/RenderStyle.h
r183660 r183748 923 923 bool isReverseFlexDirection() const { return flexDirection() == FlowRowReverse || flexDirection() == FlowColumnReverse; } 924 924 EFlexWrap flexWrap() const { return static_cast<EFlexWrap>(rareNonInheritedData->m_flexibleBox->m_flexWrap); } 925 EJustifyContent justifyContent() const { return static_cast<EJustifyContent>(rareNonInheritedData->m_justifyContent); } 925 const StyleContentAlignmentData& justifyContent() const { return rareNonInheritedData->m_justifyContent; } 926 ContentPosition justifyContentPosition() const { return rareNonInheritedData->m_justifyContent.position(); } 927 ContentDistributionType justifyContentDistribution() const { return rareNonInheritedData->m_justifyContent.distribution(); } 928 OverflowAlignment justifyContentOverflowAlignment() const { return rareNonInheritedData->m_justifyContent.overflow(); } 926 929 const StyleSelfAlignmentData& justifyItems() const { return rareNonInheritedData->m_justifyItems; } 927 930 ItemPosition justifyItemsPosition() const { return rareNonInheritedData->m_justifyItems.position(); } … … 1511 1514 void setFlexDirection(EFlexDirection direction) { SET_VAR(rareNonInheritedData.access()->m_flexibleBox, m_flexDirection, direction); } 1512 1515 void setFlexWrap(EFlexWrap w) { SET_VAR(rareNonInheritedData.access()->m_flexibleBox, m_flexWrap, w); } 1513 void setJustifyContent(EJustifyContent p) { SET_VAR(rareNonInheritedData, m_justifyContent, p); } 1516 void setJustifyContent(const StyleContentAlignmentData& data) { SET_VAR(rareNonInheritedData, m_justifyContent, data); } 1517 void setJustifyContentPosition(ContentPosition position) { rareNonInheritedData.access()->m_justifyContent.setPosition(position); } 1518 void setJustifyContentOverflow(OverflowAlignment overflow) { rareNonInheritedData.access()->m_justifyContent.setOverflow(overflow); } 1519 void setJustifyContentDistribution(ContentDistributionType distribution) { rareNonInheritedData.access()->m_justifyContent.setDistribution(distribution); } 1514 1520 void setJustifyItems(const StyleSelfAlignmentData& data) { SET_VAR(rareNonInheritedData, m_justifyItems, data); } 1515 1521 void setJustifyItemsPosition(ItemPosition position) { rareNonInheritedData.access()->m_justifyItems.setPosition(position); } … … 1805 1811 bool isOriginalDisplayInlineType() const { return isDisplayInlineType(originalDisplay()); } 1806 1812 bool isDisplayFlexibleOrGridBox() const { return isDisplayFlexibleOrGridBox(display()); } 1813 bool isDisplayFlexibleBox() const { return isDisplayFlexibleBox(display()); } 1807 1814 bool isDisplayRegionType() const 1808 1815 { … … 1929 1936 static EAlignContent initialAlignContent() { return AlignContentStretch; } 1930 1937 static StyleSelfAlignmentData initialSelfAlignment() { return StyleSelfAlignmentData(ItemPositionAuto, OverflowAlignmentDefault); } 1938 static StyleContentAlignmentData initialContentAlignment() { return StyleContentAlignmentData(ContentPositionAuto, ContentDistributionDefault, OverflowAlignmentDefault); } 1931 1939 static EFlexDirection initialFlexDirection() { return FlowRow; } 1932 1940 static EFlexWrap initialFlexWrap() { return FlexNoWrap; } 1933 static EJustifyContent initialJustifyContent() { return JustifyFlexStart; }1934 1941 static int initialMarqueeLoopCount() { return -1; } 1935 1942 static int initialMarqueeSpeed() { return 85; } -
trunk/Source/WebCore/rendering/style/RenderStyleConstants.h
r183494 r183748 249 249 enum EFlexDirection { FlowRow, FlowRowReverse, FlowColumn, FlowColumnReverse }; 250 250 enum EFlexWrap { FlexNoWrap, FlexWrap, FlexWrapReverse }; 251 enum EJustifyContent { JustifyFlexStart, JustifyFlexEnd, JustifyCenter, JustifySpaceBetween, JustifySpaceAround };252 251 enum ItemPosition {ItemPositionAuto, ItemPositionStretch, ItemPositionBaseline, ItemPositionLastBaseline, ItemPositionCenter, ItemPositionStart, ItemPositionEnd, ItemPositionSelfStart, ItemPositionSelfEnd, ItemPositionFlexStart, ItemPositionFlexEnd, ItemPositionLeft, ItemPositionRight}; 253 252 enum OverflowAlignment {OverflowAlignmentDefault, OverflowAlignmentTrue, OverflowAlignmentSafe}; 254 253 enum ItemPositionType {NonLegacyPosition, LegacyPosition}; 254 enum ContentPosition {ContentPositionAuto, ContentPositionBaseline, ContentPositionLastBaseline, ContentPositionCenter, ContentPositionStart, ContentPositionEnd, ContentPositionFlexStart, ContentPositionFlexEnd, ContentPositionLeft, ContentPositionRight}; 255 enum ContentDistributionType {ContentDistributionDefault, ContentDistributionSpaceBetween, ContentDistributionSpaceAround, ContentDistributionSpaceEvenly, ContentDistributionStretch}; 255 256 256 257 enum ETextSecurity { -
trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp
r183591 r183748 74 74 , m_alignItems(RenderStyle::initialSelfAlignment()) 75 75 , m_alignSelf(RenderStyle::initialSelfAlignment()) 76 , m_justifyContent(RenderStyle::initialContentAlignment()) 76 77 , m_justifyItems(RenderStyle::initialSelfAlignment()) 77 78 , m_justifySelf(RenderStyle::initialSelfAlignment()) … … 87 88 , m_backfaceVisibility(RenderStyle::initialBackfaceVisibility()) 88 89 , m_alignContent(RenderStyle::initialAlignContent()) 89 , m_justifyContent(RenderStyle::initialJustifyContent())90 90 , userDrag(RenderStyle::initialUserDrag()) 91 91 , textOverflow(RenderStyle::initialTextOverflow()) … … 162 162 , m_alignItems(o.m_alignItems) 163 163 , m_alignSelf(o.m_alignSelf) 164 , m_justifyContent(o.m_justifyContent) 164 165 , m_justifyItems(o.m_justifyItems) 165 166 , m_justifySelf(o.m_justifySelf) … … 175 176 , m_backfaceVisibility(o.m_backfaceVisibility) 176 177 , m_alignContent(o.m_alignContent) 177 , m_justifyContent(o.m_justifyContent)178 178 , userDrag(o.userDrag) 179 179 , textOverflow(o.textOverflow) … … 259 259 && m_alignItems == o.m_alignItems 260 260 && m_alignSelf == o.m_alignSelf 261 && m_justifyContent == o.m_justifyContent 261 262 && m_justifyItems == o.m_justifyItems 262 263 && m_justifySelf == o.m_justifySelf … … 270 271 && m_backfaceVisibility == o.m_backfaceVisibility 271 272 && m_alignContent == o.m_alignContent 272 && m_justifyContent == o.m_justifyContent273 273 && userDrag == o.userDrag 274 274 && textOverflow == o.textOverflow -
trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.h
r183591 r183748 35 35 #include "NinePieceImage.h" 36 36 #include "ShapeValue.h" 37 #include "StyleContentAlignmentData.h" 37 38 #include "StyleSelfAlignmentData.h" 38 39 #include <memory> … … 179 180 StyleSelfAlignmentData m_alignItems; 180 181 StyleSelfAlignmentData m_alignSelf; 182 StyleContentAlignmentData m_justifyContent; 181 183 StyleSelfAlignmentData m_justifyItems; 182 184 StyleSelfAlignmentData m_justifySelf; … … 197 199 198 200 unsigned m_alignContent : 3; // EAlignContent 199 unsigned m_justifyContent : 3; // EJustifyContent200 201 201 202 unsigned userDrag : 2; // EUserDrag
Note: See TracChangeset
for help on using the changeset viewer.