+2012-06-27 Tony Chang <tony@chromium.org>
+
+ Unreviewed, rolling out r121380.
+ http://trac.webkit.org/changeset/121380
+ https://bugs.webkit.org/show_bug.cgi?id=86525
+
+ Hits an ASSERT in debug.
+
+ * css3/flexbox/flex-longhand-parsing-expected.txt: Removed.
+ * css3/flexbox/flex-longhand-parsing.html: Removed.
+ * css3/flexbox/flex-property-parsing-expected.txt:
+ * css3/flexbox/flex-property-parsing.html:
+ * fast/css/getComputedStyle/computed-style-expected.txt:
+ * fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
+ * fast/css/getComputedStyle/resources/property-names.js:
+ * svg/css/getComputedStyle-basic-expected.txt:
+
2012-06-27 Jeffrey Pfau <jpfau@apple.com>
[Mac] Fix test expectation introduced in r121299
+++ /dev/null
-Tests the interaction between the -webkit-flex shorthand propery and the -webkit-flex-grow, -webkit-flex-shrink, and -webkit-flex-basis longhand properties.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-PASS flexitem.style.webkitFlex is ""
-PASS getComputedStyle(flexitem).webkitFlex is "0 1 auto"
-PASS flexitem.style.webkitFlexGrow is "2"
-PASS getComputedStyle(flexitem).webkitFlexGrow is "2"
-PASS getComputedStyle(flexitem).webkitFlex is "2 1 auto"
-PASS flexitem.style.webkitFlexShrink is "3"
-PASS getComputedStyle(flexitem).webkitFlexShrink is "3"
-PASS getComputedStyle(flexitem).webkitFlex is "2 3 auto"
-PASS flexitem.style.webkitFlexBasis is "0px"
-PASS getComputedStyle(flexitem).webkitFlexBasis is "0px"
-PASS getComputedStyle(flexitem).webkitFlex is "2 3 0px"
-PASS flexitem.style.webkitFlexShrink is "0"
-PASS getComputedStyle(flexitem).webkitFlex is "2 0 0px"
-PASS flexitem.style.webkitFlexBasis is "50%"
-PASS getComputedStyle(flexitem).webkitFlexBasis is "50%"
-PASS getComputedStyle(flexitem).webkitFlex is "2 0 50%"
-PASS flexitem.style.webkitFlexBasis is "auto"
-PASS getComputedStyle(flexitem).webkitFlex is "2 0 auto"
-PASS flexitem.style.webkitFlex is "0 0 auto"
-PASS flexitem.style.webkitFlexGrow is "0"
-PASS flexitem.style.webkitFlexShrink is "0"
-PASS flexitem.style.webkitFlexBasis is "auto"
-PASS getComputedStyle(flexitem).webkitFlex is "0 0 auto"
-PASS flexitem.style.webkitFlex is "1.5 0 auto"
-PASS getComputedStyle(flexitem).webkitFlex is "1.5 0 auto"
-PASS flexitem.style.webkitFlex is "3 1 0px"
-PASS flexitem.style.webkitFlexGrow is "3"
-PASS flexitem.style.webkitFlexShrink is "1"
-PASS flexitem.style.webkitFlexBasis is "0px"
-PASS getComputedStyle(flexitem).webkitFlex is "3 1 0px"
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
+++ /dev/null
-<!DOCTYPE html>
-<html>
-<head>
-<script src="../../fast/js/resources/js-test-pre.js"></script>
-</head>
-<body>
-<div id="flexbox">
- <div id="flexitem"></div>
-</div>
-<script>
-description('Tests the interaction between the -webkit-flex shorthand propery and the -webkit-flex-grow, -webkit-flex-shrink, and -webkit-flex-basis longhand properties.');
-
-var flexitem = document.getElementById("flexitem");
-
-// Test default value.
-shouldBeEqualToString('flexitem.style.webkitFlex', '');
-shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '0 1 auto');
-
-flexitem.style.webkitFlexGrow = 2;
-shouldBeEqualToString('flexitem.style.webkitFlexGrow', '2');
-shouldBeEqualToString('getComputedStyle(flexitem).webkitFlexGrow', '2');
-shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '2 1 auto');
-
-flexitem.style.webkitFlexShrink = 3;
-shouldBeEqualToString('flexitem.style.webkitFlexShrink', '3');
-shouldBeEqualToString('getComputedStyle(flexitem).webkitFlexShrink', '3');
-shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '2 3 auto');
-
-flexitem.style.webkitFlexBasis = 0;
-shouldBeEqualToString('flexitem.style.webkitFlexBasis', '0px');
-shouldBeEqualToString('getComputedStyle(flexitem).webkitFlexBasis', '0px');
-shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '2 3 0px');
-
-flexitem.style.webkitFlexShrink = 0;
-shouldBeEqualToString('flexitem.style.webkitFlexShrink', '0');
-shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '2 0 0px');
-
-flexitem.style.webkitFlexBasis = '50%';
-shouldBeEqualToString('flexitem.style.webkitFlexBasis', '50%');
-shouldBeEqualToString('getComputedStyle(flexitem).webkitFlexBasis', '50%');
-shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '2 0 50%');
-
-flexitem.style.webkitFlexBasis = 'auto';
-shouldBeEqualToString('flexitem.style.webkitFlexBasis', 'auto');
-shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '2 0 auto');
-
-flexitem.style.webkitFlex = 'none';
-shouldBeEqualToString('flexitem.style.webkitFlex', '0 0 auto');
-shouldBeEqualToString('flexitem.style.webkitFlexGrow', '0');
-shouldBeEqualToString('flexitem.style.webkitFlexShrink', '0');
-shouldBeEqualToString('flexitem.style.webkitFlexBasis', 'auto');
-shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '0 0 auto');
-
-flexitem.style.webkitFlexGrow = 1.5;
-shouldBeEqualToString('flexitem.style.webkitFlex', '1.5 0 auto');
-shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '1.5 0 auto');
-
-flexitem.style.webkitFlex = 3;
-shouldBeEqualToString('flexitem.style.webkitFlex', '3 1 0px');
-shouldBeEqualToString('flexitem.style.webkitFlexGrow', '3');
-shouldBeEqualToString('flexitem.style.webkitFlexShrink', '1');
-shouldBeEqualToString('flexitem.style.webkitFlexBasis', '0px');
-shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '3 1 0px');
-
-</script>
-<script src="../../fast/js/resources/js-test-post.js"></script>
-</body>
-</html>
PASS getComputedStyle(flexitem).webkitFlex is "0 1 32px"
PASS flexitem.style.webkitFlex is "0 1 0px"
PASS getComputedStyle(flexitem).webkitFlex is "0 1 0px"
-PASS flexitem.style.webkitFlex is "0 0 auto"
+PASS flexitem.style.webkitFlex is "none"
PASS getComputedStyle(flexitem).webkitFlex is "0 0 auto"
PASS flexitem.style.webkitFlex is "0 0 0px"
PASS getComputedStyle(flexitem).webkitFlex is "0 0 0px"
PASS getComputedStyle(flexitem).webkitFlex is "4 1 0px"
PASS flexitem.style.webkitFlex is "0 1 0px"
PASS getComputedStyle(flexitem).webkitFlex is "0 1 0px"
-PASS flexitem.style.webkitFlex is "0 0 auto"
+PASS flexitem.style.webkitFlex is "none"
PASS getComputedStyle(flexitem).webkitFlex is "0 0 auto"
-PASS flexitem.style.webkitFlex is "0 0 auto"
+PASS flexitem.style.webkitFlex is "none"
PASS getComputedStyle(flexitem).webkitFlex is "0 0 auto"
-PASS flexitem.style.webkitFlex is "0 0 auto"
+PASS flexitem.style.webkitFlex is "none"
PASS getComputedStyle(flexitem).webkitFlex is "0 0 auto"
-PASS flexitem.style.webkitFlex is "0 0 auto"
+PASS flexitem.style.webkitFlex is "none"
PASS getComputedStyle(flexitem).webkitFlex is "0 0 auto"
-PASS flexitem.style.webkitFlex is "0 0 auto"
+PASS flexitem.style.webkitFlex is "none"
PASS getComputedStyle(flexitem).webkitFlex is "0 0 auto"
-PASS flexitem.style.webkitFlex is "0 0 auto"
+PASS flexitem.style.webkitFlex is "none"
PASS getComputedStyle(flexitem).webkitFlex is "0 0 auto"
PASS flexitem.style.webkitFlex is "1 2 0px"
PASS getComputedStyle(flexitem).webkitFlex is "1 2 0px"
PASS getComputedStyle(flexitem).webkitFlex is "0 1 0px"
PASS flexitem.style.webkitFlex is "0 0 0px"
PASS getComputedStyle(flexitem).webkitFlex is "0 0 0px"
-PASS flexitem.style.webkitFlex is "0 0 auto"
+PASS flexitem.style.webkitFlex is "none"
PASS getComputedStyle(flexitem).webkitFlex is "0 0 auto"
-PASS flexitem.style.webkitFlex is "0 0 auto"
+PASS flexitem.style.webkitFlex is "none"
PASS getComputedStyle(flexitem).webkitFlex is "0 0 auto"
-PASS flexitem.style.webkitFlex is "0 0 auto"
+PASS flexitem.style.webkitFlex is "none"
PASS getComputedStyle(flexitem).webkitFlex is "0 0 auto"
-PASS flexitem.style.webkitFlex is "0 0 auto"
+PASS flexitem.style.webkitFlex is "none"
PASS getComputedStyle(flexitem).webkitFlex is "0 0 auto"
-PASS flexitem.style.webkitFlex is "0 0 auto"
+PASS flexitem.style.webkitFlex is "none"
PASS getComputedStyle(flexitem).webkitFlex is "0 0 auto"
-PASS flexitem.style.webkitFlex is "0 0 auto"
+PASS flexitem.style.webkitFlex is "none"
PASS getComputedStyle(flexitem).webkitFlex is "0 0 auto"
-PASS flexitem.style.webkitFlex is "0 0 auto"
+PASS flexitem.style.webkitFlex is "none"
PASS getComputedStyle(flexitem).webkitFlex is "0 0 auto"
-PASS flexitem.style.webkitFlex is "0 0 auto"
+PASS flexitem.style.webkitFlex is "none"
PASS getComputedStyle(flexitem).webkitFlex is "0 0 auto"
-PASS flexitem.style.webkitFlex is "0 0 auto"
+PASS flexitem.style.webkitFlex is "none"
PASS getComputedStyle(flexitem).webkitFlex is "0 0 auto"
-PASS flexitem.style.webkitFlex is "0 0 auto"
+PASS flexitem.style.webkitFlex is "none"
PASS getComputedStyle(flexitem).webkitFlex is "0 0 auto"
-PASS flexitem.style.webkitFlex is "0 0 auto"
+PASS flexitem.style.webkitFlex is "none"
PASS getComputedStyle(flexitem).webkitFlex is "0 0 auto"
-PASS flexitem.style.webkitFlex is "0 0 auto"
+PASS flexitem.style.webkitFlex is "none"
PASS getComputedStyle(flexitem).webkitFlex is "0 0 auto"
-PASS flexitem.style.webkitFlex is "0 0 auto"
+PASS flexitem.style.webkitFlex is "none"
PASS getComputedStyle(flexitem).webkitFlex is "0 0 auto"
-PASS flexitem.style.webkitFlex is "0 0 auto"
+PASS flexitem.style.webkitFlex is "none"
PASS getComputedStyle(flexitem).webkitFlex is "0 0 auto"
PASS flexitem.style.webkitFlex is "initial"
PASS getComputedStyle(flexitem).webkitFlex is "0 1 auto"
-FAIL flexitem.style.webkitFlex should be 0 0 auto. Was initial.
+PASS flexitem.style.webkitFlex is "none"
PASS getComputedStyle(flexitem).webkitFlex is "0 0 auto"
PASS successfullyParsed is true
flexitem.style.webkitFlex = 'none';
flexitem.style.webkitFlex = '-2'; // Invalid, return previous value.
-shouldBeEqualToString('flexitem.style.webkitFlex', '0 0 auto');
+shouldBeEqualToString('flexitem.style.webkitFlex', 'none');
shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '0 0 auto');
flexitem.style.webkitFlex = '0 0';
flexitem.style.webkitFlex = 'none';
flexitem.style.webkitFlex = '-1 5'; // Invalid, return previous value.
-shouldBeEqualToString('flexitem.style.webkitFlex', '0 0 auto');
+shouldBeEqualToString('flexitem.style.webkitFlex', 'none');
shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '0 0 auto');
flexitem.style.webkitFlex = '1 -1'; // Invalid, return previous value.
-shouldBeEqualToString('flexitem.style.webkitFlex', '0 0 auto');
+shouldBeEqualToString('flexitem.style.webkitFlex', 'none');
shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '0 0 auto');
flexitem.style.webkitFlex = '-1 -1'; // Invalid, return previous value.
-shouldBeEqualToString('flexitem.style.webkitFlex', '0 0 auto');
+shouldBeEqualToString('flexitem.style.webkitFlex', 'none');
shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '0 0 auto');
flexitem.style.webkitFlex = 'auto 2em'; // Invalid, return previous value.
-shouldBeEqualToString('flexitem.style.webkitFlex', '0 0 auto');
+shouldBeEqualToString('flexitem.style.webkitFlex', 'none');
shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '0 0 auto');
flexitem.style.webkitFlex = '2px 4px'; // Invalid, return previous value.
-shouldBeEqualToString('flexitem.style.webkitFlex', '0 0 auto');
+shouldBeEqualToString('flexitem.style.webkitFlex', 'none');
shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '0 0 auto');
flexitem.style.webkitFlex = '0px 0px'; // Invalid, return previous value.
-shouldBeEqualToString('flexitem.style.webkitFlex', '0 0 auto');
+shouldBeEqualToString('flexitem.style.webkitFlex', 'none');
shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '0 0 auto');
flexitem.style.webkitFlex = '1 2 0';
flexitem.style.webkitFlex = 'none';
flexitem.style.webkitFlex = '1 2 3'; // Invalid, return previous value.
-shouldBeEqualToString('flexitem.style.webkitFlex', '0 0 auto');
+shouldBeEqualToString('flexitem.style.webkitFlex', 'none');
shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '0 0 auto');
flexitem.style.webkitFlex = '0 2 3'; // Invalid, return previous value.
-shouldBeEqualToString('flexitem.style.webkitFlex', '0 0 auto');
+shouldBeEqualToString('flexitem.style.webkitFlex', 'none');
shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '0 0 auto');
flexitem.style.webkitFlex = '1 0 3'; // Invalid, return previous value.
-shouldBeEqualToString('flexitem.style.webkitFlex', '0 0 auto');
+shouldBeEqualToString('flexitem.style.webkitFlex', 'none');
shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '0 0 auto');
flexitem.style.webkitFlex = '0 0 1'; // Invalid, return previous value.
-shouldBeEqualToString('flexitem.style.webkitFlex', '0 0 auto');
+shouldBeEqualToString('flexitem.style.webkitFlex', 'none');
shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '0 0 auto');
flexitem.style.webkitFlex = '1 -2 3px'; // Invalid, return previous value.
-shouldBeEqualToString('flexitem.style.webkitFlex', '0 0 auto');
+shouldBeEqualToString('flexitem.style.webkitFlex', 'none');
shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '0 0 auto');
flexitem.style.webkitFlex = '1 2px 3px'; // Invalid, return previous value.
-shouldBeEqualToString('flexitem.style.webkitFlex', '0 0 auto');
+shouldBeEqualToString('flexitem.style.webkitFlex', 'none');
shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '0 0 auto');
flexitem.style.webkitFlex = '1 2px auto'; // Invalid, return previous value.
-shouldBeEqualToString('flexitem.style.webkitFlex', '0 0 auto');
+shouldBeEqualToString('flexitem.style.webkitFlex', 'none');
shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '0 0 auto');
flexitem.style.webkitFlex = '0px 0px 0'; // Invalid, return previous value.
-shouldBeEqualToString('flexitem.style.webkitFlex', '0 0 auto');
+shouldBeEqualToString('flexitem.style.webkitFlex', 'none');
shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '0 0 auto');
flexitem.style.webkitFlex = '0 0 0 0'; // Invalid, return previous value.
-shouldBeEqualToString('flexitem.style.webkitFlex', '0 0 auto');
+shouldBeEqualToString('flexitem.style.webkitFlex', 'none');
shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '0 0 auto');
flexitem.style.webkitFlex = '0 0 0px 0'; // Invalid, return previous value.
-shouldBeEqualToString('flexitem.style.webkitFlex', '0 0 auto');
+shouldBeEqualToString('flexitem.style.webkitFlex', 'none');
shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '0 0 auto');
flexitem.style.webkitFlex = '0 0 0px 0px'; // Invalid, return previous value.
-shouldBeEqualToString('flexitem.style.webkitFlex', '0 0 auto');
+shouldBeEqualToString('flexitem.style.webkitFlex', 'none');
shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '0 0 auto');
flexitem.style.webkitFlex = '0 0 0px 0'; // Invalid, return previous value.
-shouldBeEqualToString('flexitem.style.webkitFlex', '0 0 auto');
+shouldBeEqualToString('flexitem.style.webkitFlex', 'none');
shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '0 0 auto');
flexitem.style.webkitFlex = '1, 2, 3px'; // Invalid, return previous value.
-shouldBeEqualToString('flexitem.style.webkitFlex', '0 0 auto');
+shouldBeEqualToString('flexitem.style.webkitFlex', 'none');
shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '0 0 auto');
flexitem.style.webkitFlex = '1,'; // Invalid, return previous value.
-shouldBeEqualToString('flexitem.style.webkitFlex', '0 0 auto');
+shouldBeEqualToString('flexitem.style.webkitFlex', 'none');
shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '0 0 auto');
flexitem.style.webkitFlex = 'initial';
shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '0 1 auto');
flexitem.style.webkitFlex = 'none';
-// FIXME: This test case is failing. https://bugs.webkit.org/show_bug.cgi?id=90020
-shouldBeEqualToString('flexitem.style.webkitFlex', '0 0 auto');
+shouldBeEqualToString('flexitem.style.webkitFlex', 'none');
shouldBeEqualToString('getComputedStyle(flexitem).webkitFlex', '0 0 auto');
</script>
<script src="../../fast/js/resources/js-test-post.js"></script>
-webkit-align-content: stretch;
-webkit-align-items: stretch;
-webkit-align-self: stretch;
+-webkit-flex: 0 1 auto;
-webkit-flex-direction: row;
-webkit-flex-wrap: none;
-webkit-justify-content: flex-start;
-webkit-align-content: stretch
-webkit-align-items: stretch
-webkit-align-self: stretch
+-webkit-flex: 0 1 auto
-webkit-flex-direction: row
-webkit-flex-wrap: none
-webkit-justify-content: flex-start
"-webkit-column-rule-width": true,
"-webkit-column-span": true,
"-webkit-column-width": true,
+ "-webkit-flex": true,
"-webkit-flex-direction": true,
"-webkit-flex-wrap": true,
"-webkit-font-kerning": true,
rect: style.getPropertyCSSValue(-webkit-align-items) : [object CSSPrimitiveValue]
rect: style.getPropertyValue(-webkit-align-self) : stretch
rect: style.getPropertyCSSValue(-webkit-align-self) : [object CSSPrimitiveValue]
+rect: style.getPropertyValue(-webkit-flex) : 0 1 auto
+rect: style.getPropertyCSSValue(-webkit-flex) : [object CSSValueList]
rect: style.getPropertyValue(-webkit-flex-direction) : row
rect: style.getPropertyCSSValue(-webkit-flex-direction) : [object CSSPrimitiveValue]
rect: style.getPropertyValue(-webkit-flex-wrap) : none
g: style.getPropertyCSSValue(-webkit-align-items) : [object CSSPrimitiveValue]
g: style.getPropertyValue(-webkit-align-self) : stretch
g: style.getPropertyCSSValue(-webkit-align-self) : [object CSSPrimitiveValue]
+g: style.getPropertyValue(-webkit-flex) : 0 1 auto
+g: style.getPropertyCSSValue(-webkit-flex) : [object CSSValueList]
g: style.getPropertyValue(-webkit-flex-direction) : row
g: style.getPropertyCSSValue(-webkit-flex-direction) : [object CSSPrimitiveValue]
g: style.getPropertyValue(-webkit-flex-wrap) : none
+2012-06-27 Tony Chang <tony@chromium.org>
+
+ Unreviewed, rolling out r121380.
+ http://trac.webkit.org/changeset/121380
+ https://bugs.webkit.org/show_bug.cgi?id=86525
+
+ Hits an ASSERT in debug.
+
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore):
+ (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
+ * css/CSSParser.cpp:
+ (WebCore::isValidKeywordPropertyAndValue):
+ (WebCore::CSSParser::parseValue):
+ (WebCore::CSSParser::parseFlex):
+ * css/CSSParser.h:
+ * css/CSSProperty.cpp:
+ (WebCore::CSSProperty::isInheritedProperty):
+ * css/CSSPropertyNames.in:
+ * css/StyleBuilder.cpp:
+ (ApplyPropertyFlex):
+ (WebCore::ApplyPropertyFlex::applyInheritValue):
+ (WebCore::ApplyPropertyFlex::applyInitialValue):
+ (WebCore::ApplyPropertyFlex::applyValue):
+ (WebCore::ApplyPropertyFlex::createHandler):
+ (WebCore::ApplyPropertyFlex::getFlexValue):
+ (WebCore):
+ (WebCore::StyleBuilder::StyleBuilder):
+ * css/StylePropertySet.cpp:
+ (WebCore::StylePropertySet::getPropertyValue):
+ (WebCore::StylePropertySet::asText):
+ * css/StylePropertyShorthand.cpp:
+ (WebCore::webkitFlexFlowShorthand):
+ (WebCore::shorthandForProperty):
+ * css/StylePropertyShorthand.h:
+ (WebCore):
+ * css/StyleResolver.cpp:
+ (WebCore::StyleResolver::collectMatchingRulesForList):
+
2012-06-27 Rakesh KN <rakesh.kn@motorola.com>
HTMLFieldSetElement::m_documentVersion is not initialized
CSSPropertyWebkitAlignContent,
CSSPropertyWebkitAlignItems,
CSSPropertyWebkitAlignSelf,
- CSSPropertyWebkitFlexBasis,
- CSSPropertyWebkitFlexGrow,
- CSSPropertyWebkitFlexShrink,
+ CSSPropertyWebkitFlex,
CSSPropertyWebkitFlexDirection,
CSSPropertyWebkitFlexWrap,
CSSPropertyWebkitJustifyContent,
case CSSPropertyEmptyCells:
return cssValuePool().createValue(style->emptyCells());
#if ENABLE(CSS3_FLEXBOX)
- case CSSPropertyWebkitAlignContent:
- return cssValuePool().createValue(style->alignContent());
+ case CSSPropertyWebkitFlex: {
+ RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
+ list->append(cssValuePool().createValue(style->flexGrow()));
+ list->append(cssValuePool().createValue(style->flexShrink()));
+
+ Length flexBasis = style->flexBasis();
+ if (flexBasis.isAuto())
+ list->append(cssValuePool().createIdentifierValue(CSSValueAuto));
+ else if (flexBasis.isPercent())
+ list->append(cssValuePool().createValue(flexBasis.value(), CSSPrimitiveValue::CSS_PERCENTAGE));
+ else
+ list->append(cssValuePool().createValue(flexBasis.value(), CSSPrimitiveValue::CSS_PX));
+
+ return list.release();
+ }
+ case CSSPropertyWebkitOrder:
+ return cssValuePool().createValue(style->order());
+ case CSSPropertyWebkitJustifyContent:
+ return cssValuePool().createValue(style->justifyContent());
case CSSPropertyWebkitAlignItems:
return cssValuePool().createValue(style->alignItems());
case CSSPropertyWebkitAlignSelf:
return cssValuePool().createValue(AlignStretch);
}
return cssValuePool().createValue(style->alignSelf());
- case CSSPropertyWebkitFlex:
- return getCSSPropertyValuesForShorthandProperties(webkitFlexShorthand());
- case CSSPropertyWebkitFlexBasis:
- return cssValuePool().createValue(style->flexBasis());
case CSSPropertyWebkitFlexDirection:
return cssValuePool().createValue(style->flexDirection());
- case CSSPropertyWebkitFlexFlow:
- return getCSSPropertyValuesForShorthandProperties(webkitFlexFlowShorthand());
- case CSSPropertyWebkitFlexGrow:
- return cssValuePool().createValue(style->flexGrow());
- case CSSPropertyWebkitFlexShrink:
- return cssValuePool().createValue(style->flexShrink());
case CSSPropertyWebkitFlexWrap:
return cssValuePool().createValue(style->flexWrap());
- case CSSPropertyWebkitJustifyContent:
- return cssValuePool().createValue(style->justifyContent());
- case CSSPropertyWebkitOrder:
- return cssValuePool().createValue(style->order());
+ case CSSPropertyWebkitAlignContent:
+ return cssValuePool().createValue(style->alignContent());
+ case CSSPropertyWebkitFlexFlow: {
+ RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
+ list->append(cssValuePool().createValue(style->flexDirection()));
+ list->append(cssValuePool().createValue(style->flexWrap()));
+ return list.release();
+ }
#endif
case CSSPropertyFloat:
return cssValuePool().createValue(style->floating());
break;
case CSSPropertyWebkitFlexDirection:
if (valueID == CSSValueRow || valueID == CSSValueRowReverse || valueID == CSSValueColumn || valueID == CSSValueColumnReverse)
- return true;
+ return true;
break;
case CSSPropertyWebkitFlexWrap:
if (valueID == CSSValueNone || valueID == CSSValueWrap || valueID == CSSValueWrapReverse)
break;
#endif
#if ENABLE(CSS3_FLEXBOX)
- case CSSPropertyWebkitFlex: {
- ShorthandScope scope(this, propId);
- if (id == CSSValueNone) {
- addProperty(CSSPropertyWebkitFlexGrow, cssValuePool().createValue(0, CSSPrimitiveValue::CSS_NUMBER), important);
- addProperty(CSSPropertyWebkitFlexShrink, cssValuePool().createValue(0, CSSPrimitiveValue::CSS_NUMBER), important);
- addProperty(CSSPropertyWebkitFlexBasis, cssValuePool().createIdentifierValue(CSSValueAuto), important);
- return true;
- }
- return parseFlex(m_valueList.get(), important);
- }
- case CSSPropertyWebkitFlexBasis:
- // FIXME: Support intrinsic dimensions too.
- if (id == CSSValueAuto)
+ case CSSPropertyWebkitFlex:
+ if (id == CSSValueNone)
validPrimitive = true;
else
- validPrimitive = (!id && validUnit(value, FLength | FPercent | FNonNeg));
- break;
- case CSSPropertyWebkitFlexGrow:
- case CSSPropertyWebkitFlexShrink:
- validPrimitive = validUnit(value, FNumber | FNonNeg);
+ parsedValue = parseFlex(m_valueList.get());
break;
case CSSPropertyWebkitOrder:
validPrimitive = validUnit(value, FNumber);
#if ENABLE(CSS3_FLEXBOX)
-bool CSSParser::parseFlex(CSSParserValueList* args, bool important)
+PassRefPtr<CSSValue> CSSParser::parseFlex(CSSParserValueList* args)
{
if (!args || !args->size() || args->size() > 3)
- return false;
+ return 0;
static const double unsetValue = -1;
- double flexGrow = unsetValue;
- double flexShrink = unsetValue;
- RefPtr<CSSPrimitiveValue> flexBasis;
+ double positiveFlex = unsetValue;
+ double negativeFlex = unsetValue;
+ RefPtr<CSSPrimitiveValue> preferredSize;
while (CSSParserValue* arg = args->current()) {
if (validUnit(arg, FNumber | FNonNeg)) {
- if (flexGrow == unsetValue)
- flexGrow = arg->fValue;
- else if (flexShrink == unsetValue)
- flexShrink = arg->fValue;
+ if (positiveFlex == unsetValue)
+ positiveFlex = arg->fValue;
+ else if (negativeFlex == unsetValue)
+ negativeFlex = arg->fValue;
else if (!arg->fValue) {
- // flex only allows a basis of 0 (sans units) if flex-grow and flex-shrink values have already been set.
- flexBasis = cssValuePool().createValue(0, CSSPrimitiveValue::CSS_PX);
+ // flex() only allows a preferred size of 0 (sans units) if the positive and negative flex values have already been set.
+ preferredSize = cssValuePool().createValue(0, CSSPrimitiveValue::CSS_PX);
} else {
- // We only allow 3 numbers without units if the last value is 0. E.g., flex:1 1 1 is invalid.
- return false;
+ // We only allow 3 numbers without units if the last value is 0. E.g., flex(1 1 1) is invalid.
+ return 0;
}
- } else if (!flexBasis && (arg->id == CSSValueAuto || validUnit(arg, FLength | FPercent | FNonNeg)))
- flexBasis = parseValidPrimitive(arg->id, arg);
+ } else if (!preferredSize && (arg->id == CSSValueAuto || validUnit(arg, FLength | FPercent | FNonNeg)))
+ preferredSize = parseValidPrimitive(arg->id, arg);
else {
- // Not a valid arg for flex.
- return false;
+ // Not a valid arg for flex().
+ return 0;
}
args->next();
}
- if (flexGrow == unsetValue)
- flexGrow = 0;
- if (flexShrink == unsetValue)
- flexShrink = 1;
- if (!flexBasis)
- flexBasis = cssValuePool().createValue(0, CSSPrimitiveValue::CSS_PX);
+ if (positiveFlex == unsetValue)
+ positiveFlex = 0;
+ if (negativeFlex == unsetValue)
+ negativeFlex = 1;
+ if (!preferredSize)
+ preferredSize = cssValuePool().createValue(0, CSSPrimitiveValue::CSS_PX);
- addProperty(CSSPropertyWebkitFlexGrow, cssValuePool().createValue(clampToFloat(flexGrow), CSSPrimitiveValue::CSS_NUMBER), important);
- addProperty(CSSPropertyWebkitFlexShrink, cssValuePool().createValue(clampToFloat(flexShrink), CSSPrimitiveValue::CSS_NUMBER), important);
- addProperty(CSSPropertyWebkitFlexBasis, flexBasis, important);
- return true;
+ RefPtr<CSSValueList> flex = CSSValueList::createSpaceSeparated();
+ flex->append(cssValuePool().createValue(clampToFloat(positiveFlex), CSSPrimitiveValue::CSS_NUMBER));
+ flex->append(cssValuePool().createValue(clampToFloat(negativeFlex), CSSPrimitiveValue::CSS_NUMBER));
+ flex->append(preferredSize);
+ return flex;
}
#endif
bool parseReflect(CSSPropertyID, bool important);
- bool parseFlex(CSSParserValueList* args, bool important);
+ PassRefPtr<CSSValue> parseFlex(CSSParserValueList* args);
// Image generators
bool parseCanvas(CSSParserValueList*, RefPtr<CSSValue>&);
case CSSPropertyWebkitAlignItems:
case CSSPropertyWebkitAlignSelf:
case CSSPropertyWebkitFlex:
- case CSSPropertyWebkitFlexBasis:
case CSSPropertyWebkitFlexDirection:
case CSSPropertyWebkitFlexFlow:
- case CSSPropertyWebkitFlexGrow:
- case CSSPropertyWebkitFlexShrink:
case CSSPropertyWebkitFlexWrap:
case CSSPropertyWebkitJustifyContent:
case CSSPropertyWebkitOrder:
-webkit-align-items
-webkit-align-self
-webkit-flex
--webkit-flex-basis
-webkit-flex-direction
-webkit-flex-flow
--webkit-flex-grow
--webkit-flex-shrink
-webkit-flex-wrap
-webkit-justify-content
#endif
}
};
+class ApplyPropertyFlex {
+public:
+ static void applyInheritValue(StyleResolver* styleResolver)
+ {
+ ApplyPropertyDefaultBase<float, &RenderStyle::flexGrow, float, &RenderStyle::setFlexGrow, float, &RenderStyle::initialFlexGrow>::applyInheritValue(styleResolver);
+ ApplyPropertyDefaultBase<float, &RenderStyle::flexShrink, float, &RenderStyle::setFlexShrink, float, &RenderStyle::initialFlexShrink>::applyInheritValue(styleResolver);
+ ApplyPropertyDefaultBase<Length, &RenderStyle::flexBasis, Length, &RenderStyle::setFlexBasis, Length, &RenderStyle::initialFlexBasis>::applyInheritValue(styleResolver);
+ }
+
+ static void applyInitialValue(StyleResolver* styleResolver)
+ {
+ styleResolver->style()->setFlexGrow(RenderStyle::initialFlexGrow());
+ styleResolver->style()->setFlexShrink(RenderStyle::initialFlexShrink());
+ styleResolver->style()->setFlexBasis(RenderStyle::initialFlexBasis());
+ }
+
+ static void applyValue(StyleResolver* styleResolver, CSSValue* value)
+ {
+ if (value->isPrimitiveValue()) {
+ CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value);
+ if (primitiveValue->getIdent() == CSSValueNone) {
+ styleResolver->style()->setFlexGrow(0);
+ styleResolver->style()->setFlexShrink(0);
+ styleResolver->style()->setFlexBasis(Length(Auto));
+ }
+ return;
+ }
+
+ if (!value->isValueList())
+ return;
+ CSSValueList* valueList = static_cast<CSSValueList*>(value);
+ if (valueList->length() != 3)
+ return;
+
+ float flexValue = 0;
+ if (!getFlexValue(valueList->itemWithoutBoundsCheck(0), flexValue))
+ return;
+ styleResolver->style()->setFlexGrow(flexValue);
+
+ if (!getFlexValue(valueList->itemWithoutBoundsCheck(1), flexValue))
+ return;
+ styleResolver->style()->setFlexShrink(flexValue);
+
+ ApplyPropertyLength<&RenderStyle::flexBasis, &RenderStyle::setFlexBasis, &RenderStyle::initialFlexBasis, AutoEnabled>::applyValue(styleResolver, valueList->itemWithoutBoundsCheck(2));
+ }
+
+ static PropertyHandler createHandler()
+ {
+ return PropertyHandler(&applyInheritValue, &applyInitialValue, &applyValue);
+ }
+private:
+ static bool getFlexValue(CSSValue* value, float& flexValue)
+ {
+ if (!value->isPrimitiveValue())
+ return false;
+ CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value);
+ if (!primitiveValue->isNumber())
+ return false;
+ flexValue = primitiveValue->getFloatValue();
+ return true;
+ }
+
+};
+
#if ENABLE(CSS_EXCLUSIONS)
template <CSSWrapShape* (RenderStyle::*getterFunction)() const, void (RenderStyle::*setterFunction)(PassRefPtr<CSSWrapShape>), CSSWrapShape* (*initialFunction)()>
class ApplyPropertyWrapShape {
setPropertyHandler(CSSPropertyWebkitAlignContent, ApplyPropertyDefault<EAlignContent, &RenderStyle::alignContent, EAlignContent, &RenderStyle::setAlignContent, EAlignContent, &RenderStyle::initialAlignContent>::createHandler());
setPropertyHandler(CSSPropertyWebkitAlignItems, ApplyPropertyDefault<EAlignItems, &RenderStyle::alignItems, EAlignItems, &RenderStyle::setAlignItems, EAlignItems, &RenderStyle::initialAlignItems>::createHandler());
setPropertyHandler(CSSPropertyWebkitAlignSelf, ApplyPropertyDefault<EAlignItems, &RenderStyle::alignSelf, EAlignItems, &RenderStyle::setAlignSelf, EAlignItems, &RenderStyle::initialAlignSelf>::createHandler());
- setPropertyHandler(CSSPropertyWebkitFlexBasis, ApplyPropertyLength<&RenderStyle::flexBasis, &RenderStyle::setFlexBasis, &RenderStyle::initialFlexBasis, AutoEnabled>::createHandler());
+ setPropertyHandler(CSSPropertyWebkitFlex, ApplyPropertyFlex::createHandler());
setPropertyHandler(CSSPropertyWebkitFlexDirection, ApplyPropertyDefault<EFlexDirection, &RenderStyle::flexDirection, EFlexDirection, &RenderStyle::setFlexDirection, EFlexDirection, &RenderStyle::initialFlexDirection>::createHandler());
- setPropertyHandler(CSSPropertyWebkitFlexGrow, ApplyPropertyDefault<float, &RenderStyle::flexGrow, float, &RenderStyle::setFlexGrow, float, &RenderStyle::initialFlexGrow>::createHandler());
- setPropertyHandler(CSSPropertyWebkitFlexShrink, ApplyPropertyDefault<float, &RenderStyle::flexShrink, float, &RenderStyle::setFlexShrink, float, &RenderStyle::initialFlexShrink>::createHandler());
+ setPropertyHandler(CSSPropertyWebkitFlexFlow, ApplyPropertyExpanding<SuppressValue, CSSPropertyWebkitFlexDirection, CSSPropertyWebkitFlexWrap>::createHandler());
setPropertyHandler(CSSPropertyWebkitFlexWrap, ApplyPropertyDefault<EFlexWrap, &RenderStyle::flexWrap, EFlexWrap, &RenderStyle::setFlexWrap, EFlexWrap, &RenderStyle::initialFlexWrap>::createHandler());
setPropertyHandler(CSSPropertyWebkitJustifyContent, ApplyPropertyDefault<EJustifyContent, &RenderStyle::justifyContent, EJustifyContent, &RenderStyle::setJustifyContent, EJustifyContent, &RenderStyle::initialJustifyContent>::createHandler());
setPropertyHandler(CSSPropertyWebkitOrder, ApplyPropertyDefault<float, &RenderStyle::order, float, &RenderStyle::setOrder, float, &RenderStyle::initialOrder>::createHandler());
case CSSPropertyBorderStyle:
return get4Values(borderStyleShorthand());
#if ENABLE(CSS3_FLEXBOX)
- case CSSPropertyWebkitFlex:
- return getShorthandValue(webkitFlexShorthand());
case CSSPropertyWebkitFlexFlow:
return getShorthandValue(webkitFlexFlowShorthand());
#endif
case CSSPropertyWebkitFlexWrap:
shorthandPropertyID = CSSPropertyWebkitFlexFlow;
break;
- case CSSPropertyWebkitFlexBasis:
- case CSSPropertyWebkitFlexGrow:
- case CSSPropertyWebkitFlexShrink:
- shorthandPropertyID = CSSPropertyWebkitFlex;
- break;
#endif
case CSSPropertyWebkitMaskPositionX:
case CSSPropertyWebkitMaskPositionY:
DEFINE_STATIC_LOCAL(StylePropertyShorthand, webkitFlexFlowLonghands, (flexFlowProperties, WTF_ARRAY_LENGTH(flexFlowProperties)));
return webkitFlexFlowLonghands;
}
-
-const StylePropertyShorthand& webkitFlexShorthand()
-{
- static const CSSPropertyID flexProperties[] = { CSSPropertyWebkitFlexGrow, CSSPropertyWebkitFlexShrink, CSSPropertyWebkitFlexBasis };
- DEFINE_STATIC_LOCAL(StylePropertyShorthand, webkitFlexLonghands, (flexProperties, WTF_ARRAY_LENGTH(flexProperties)));
- return webkitFlexLonghands;
-}
#endif
const StylePropertyShorthand& webkitMarginCollapseShorthand()
case CSSPropertyWebkitColumnRule:
return webkitColumnRuleShorthand();
#if ENABLE(CSS3_FLEXBOX)
- case CSSPropertyWebkitFlex:
- return webkitFlexShorthand();
case CSSPropertyWebkitFlexFlow:
return webkitFlexFlowShorthand();
#endif
const StylePropertyShorthand& webkitColumnRuleShorthand();
#if ENABLE(CSS3_FLEXBOX)
const StylePropertyShorthand& webkitFlexFlowShorthand();
-const StylePropertyShorthand& webkitFlexShorthand();
#endif
const StylePropertyShorthand& webkitMarginCollapseShorthand();
const StylePropertyShorthand& webkitMarqueeShorthand();
case CSSPropertyWebkitAlignItems:
case CSSPropertyWebkitAlignSelf:
case CSSPropertyWebkitFlex:
- case CSSPropertyWebkitFlexBasis:
case CSSPropertyWebkitFlexDirection:
case CSSPropertyWebkitFlexFlow:
- case CSSPropertyWebkitFlexGrow:
- case CSSPropertyWebkitFlexShrink:
case CSSPropertyWebkitFlexWrap:
case CSSPropertyWebkitJustifyContent:
case CSSPropertyWebkitOrder: