Changeset 93908 in webkit


Ignore:
Timestamp:
Aug 26, 2011 1:42:27 PM (13 years ago)
Author:
tony@chromium.org
Message:

Add CSS parsing for -webkit-flex-align
https://bugs.webkit.org/show_bug.cgi?id=66726

Reviewed by Ojan Vafai.

Source/WebCore:

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):

  • css/CSSParser.cpp:

(WebCore::CSSParser::parseValue):

  • css/CSSPrimitiveValueMappings.h:

(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator EFlexAlign):

  • css/CSSPropertyNames.in:
  • css/CSSStyleApplyProperty.cpp:

(WebCore::CSSStyleApplyProperty::CSSStyleApplyProperty):

  • css/CSSStyleSelector.cpp:

(WebCore::CSSStyleSelector::applyProperty):

  • css/CSSValueKeywords.in:
  • rendering/style/RenderStyle.h:

(WebCore::InheritedFlags::flexAlign):
(WebCore::InheritedFlags::setFlexAlign):
(WebCore::InheritedFlags::initialFlexAlign):

  • rendering/style/RenderStyleConstants.h:
  • rendering/style/StyleFlexibleBoxData.cpp:

(WebCore::StyleFlexibleBoxData::StyleFlexibleBoxData):
(WebCore::StyleFlexibleBoxData::operator==):

  • rendering/style/StyleFlexibleBoxData.h:

LayoutTests:

  • css3/flexbox/css-properties-expected.txt:
  • css3/flexbox/script-tests/css-properties.js:
Location:
trunk
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r93904 r93908  
     12011-08-26  Tony Chang  <tony@chromium.org>
     2
     3        Add CSS parsing for -webkit-flex-align
     4        https://bugs.webkit.org/show_bug.cgi?id=66726
     5
     6        Reviewed by Ojan Vafai.
     7
     8        * css3/flexbox/css-properties-expected.txt:
     9        * css3/flexbox/script-tests/css-properties.js:
     10
    1112011-08-26  Martin Robinson  <mrobinson@igalia.com>
    212
  • trunk/LayoutTests/css3/flexbox/css-properties-expected.txt

    r93551 r93908  
    2929PASS flexbox.style.webkitFlexPack is ""
    3030PASS window.getComputedStyle(flexbox, null).webkitFlexPack is "start"
     31PASS flexbox.style.webkitFlexAlign is ""
     32PASS window.getComputedStyle(flexbox, null).webkitFlexAlign is "stretch"
     33PASS flexbox.style.webkitFlexAlign is ""
     34PASS flexbox.style.webkitFlexAlign is "before"
     35PASS window.getComputedStyle(flexbox, null).webkitFlexAlign is "before"
     36PASS flexbox.style.webkitFlexAlign is "after"
     37PASS window.getComputedStyle(flexbox, null).webkitFlexAlign is "after"
     38PASS flexbox.style.webkitFlexAlign is "middle"
     39PASS window.getComputedStyle(flexbox, null).webkitFlexAlign is "middle"
     40PASS flexbox.style.webkitFlexAlign is "stretch"
     41PASS window.getComputedStyle(flexbox, null).webkitFlexAlign is "stretch"
     42PASS flexbox.style.webkitFlexAlign is "baseline"
     43PASS window.getComputedStyle(flexbox, null).webkitFlexAlign is "baseline"
     44PASS flexbox.style.webkitFlexAlign is ""
     45PASS window.getComputedStyle(flexbox, null).webkitFlexAlign is "stretch"
    3146PASS successfullyParsed is true
    3247
  • trunk/LayoutTests/css3/flexbox/script-tests/css-properties.js

    r93551 r93908  
    6969shouldBeEqualToString('window.getComputedStyle(flexbox, null).webkitFlexPack', 'start');
    7070
     71
     72shouldBeEqualToString('flexbox.style.webkitFlexAlign', '');
     73// The initial value is 'stretch'.
     74shouldBeEqualToString('window.getComputedStyle(flexbox, null).webkitFlexAlign', 'stretch');
     75
     76flexbox.style.webkitFlexAlign = 'foo';
     77shouldBeEqualToString('flexbox.style.webkitFlexAlign', '');
     78
     79flexbox.style.webkitFlexAlign = 'before';
     80shouldBeEqualToString('flexbox.style.webkitFlexAlign', 'before');
     81shouldBeEqualToString('window.getComputedStyle(flexbox, null).webkitFlexAlign', 'before');
     82
     83flexbox.style.webkitFlexAlign = 'after';
     84shouldBeEqualToString('flexbox.style.webkitFlexAlign', 'after');
     85shouldBeEqualToString('window.getComputedStyle(flexbox, null).webkitFlexAlign', 'after');
     86
     87flexbox.style.webkitFlexAlign = 'middle';
     88shouldBeEqualToString('flexbox.style.webkitFlexAlign', 'middle');
     89shouldBeEqualToString('window.getComputedStyle(flexbox, null).webkitFlexAlign', 'middle');
     90
     91flexbox.style.webkitFlexAlign = 'stretch';
     92shouldBeEqualToString('flexbox.style.webkitFlexAlign', 'stretch');
     93shouldBeEqualToString('window.getComputedStyle(flexbox, null).webkitFlexAlign', 'stretch');
     94
     95flexbox.style.webkitFlexAlign = 'baseline';
     96shouldBeEqualToString('flexbox.style.webkitFlexAlign', 'baseline');
     97shouldBeEqualToString('window.getComputedStyle(flexbox, null).webkitFlexAlign', 'baseline');
     98
     99flexbox.style.webkitFlexAlign = '';
     100shouldBeEqualToString('flexbox.style.webkitFlexAlign', '');
     101shouldBeEqualToString('window.getComputedStyle(flexbox, null).webkitFlexAlign', 'stretch');
     102
    71103successfullyParsed = true;
  • trunk/Source/WebCore/ChangeLog

    r93907 r93908  
     12011-08-26  Tony Chang  <tony@chromium.org>
     2
     3        Add CSS parsing for -webkit-flex-align
     4        https://bugs.webkit.org/show_bug.cgi?id=66726
     5
     6        Reviewed by Ojan Vafai.
     7
     8        * css/CSSComputedStyleDeclaration.cpp:
     9        (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
     10        * css/CSSParser.cpp:
     11        (WebCore::CSSParser::parseValue):
     12        * css/CSSPrimitiveValueMappings.h:
     13        (WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
     14        (WebCore::CSSPrimitiveValue::operator EFlexAlign):
     15        * css/CSSPropertyNames.in:
     16        * css/CSSStyleApplyProperty.cpp:
     17        (WebCore::CSSStyleApplyProperty::CSSStyleApplyProperty):
     18        * css/CSSStyleSelector.cpp:
     19        (WebCore::CSSStyleSelector::applyProperty):
     20        * css/CSSValueKeywords.in:
     21        * rendering/style/RenderStyle.h:
     22        (WebCore::InheritedFlags::flexAlign):
     23        (WebCore::InheritedFlags::setFlexAlign):
     24        (WebCore::InheritedFlags::initialFlexAlign):
     25        * rendering/style/RenderStyleConstants.h:
     26        * rendering/style/StyleFlexibleBoxData.cpp:
     27        (WebCore::StyleFlexibleBoxData::StyleFlexibleBoxData):
     28        (WebCore::StyleFlexibleBoxData::operator==):
     29        * rendering/style/StyleFlexibleBoxData.h:
     30
    1312011-08-26  Nate Chapin  <japhet@chromium.org>
    232
  • trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp

    r93551 r93908  
    203203    CSSPropertyWebkitFlexOrder,
    204204    CSSPropertyWebkitFlexPack,
     205    CSSPropertyWebkitFlexAlign,
    205206#endif
    206207    CSSPropertyWebkitFontSmoothing,
     
    11091110        case CSSPropertyWebkitFlexPack:
    11101111            return primitiveValueCache->createValue(style->flexPack());
     1112        case CSSPropertyWebkitFlexAlign:
     1113            return primitiveValueCache->createValue(style->flexAlign());
    11111114#endif
    11121115        case CSSPropertyFloat:
  • trunk/Source/WebCore/css/CSSParser.cpp

    r93551 r93908  
    15431543    case CSSPropertyWebkitFlexPack:
    15441544        validPrimitive = id == CSSValueStart || id == CSSValueEnd || id == CSSValueCenter || id == CSSValueJustify;
     1545        break;
     1546    case CSSPropertyWebkitFlexAlign:
     1547        validPrimitive = id == CSSValueBefore || id == CSSValueAfter || id == CSSValueMiddle || id == CSSValueBaseline || id == CSSValueStretch;
    15451548        break;
    15461549#endif
  • trunk/Source/WebCore/css/CSSPrimitiveValueMappings.h

    r93557 r93908  
    10641064}
    10651065
     1066template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EFlexAlign e)
     1067    : m_type(CSS_IDENT)
     1068    , m_hasCachedCSSText(false)
     1069{
     1070    switch (e) {
     1071    case AlignBefore:
     1072        m_value.ident = CSSValueBefore;
     1073        break;
     1074    case AlignAfter:
     1075        m_value.ident = CSSValueAfter;
     1076        break;
     1077    case AlignMiddle:
     1078        m_value.ident = CSSValueMiddle;
     1079        break;
     1080    case AlignStretch:
     1081        m_value.ident = CSSValueStretch;
     1082        break;
     1083    case AlignBaseline:
     1084        m_value.ident = CSSValueBaseline;
     1085        break;
     1086    }
     1087}
     1088
     1089template<> inline CSSPrimitiveValue::operator EFlexAlign() const
     1090{
     1091    switch (m_value.ident) {
     1092    case CSSValueBefore:
     1093        return AlignBefore;
     1094    case CSSValueAfter:
     1095        return AlignAfter;
     1096    case CSSValueMiddle:
     1097        return AlignMiddle;
     1098    case CSSValueStretch:
     1099        return AlignStretch;
     1100    case CSSValueBaseline:
     1101        return AlignBaseline;
     1102    default:
     1103        ASSERT_NOT_REACHED();
     1104        return AlignBefore;
     1105    }
     1106}
     1107
    10661108template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EFlexPack e)
    10671109    : m_type(CSS_IDENT)
  • trunk/Source/WebCore/css/CSSPropertyNames.in

    r93551 r93908  
    244244-webkit-columns
    245245#if defined(ENABLE_CSS3_FLEXBOX) && ENABLE_CSS3_FLEXBOX
     246-webkit-flex-align
    246247-webkit-flex-order
    247248-webkit-flex-pack
  • trunk/Source/WebCore/css/CSSStyleApplyProperty.cpp

    r93848 r93908  
    988988    setPropertyHandler(CSSPropertyWebkitFlexOrder, new ApplyPropertyDefault<int>(&RenderStyle::flexOrder, &RenderStyle::setFlexOrder, &RenderStyle::initialFlexOrder));
    989989    setPropertyHandler(CSSPropertyWebkitFlexPack, new ApplyPropertyDefault<EFlexPack>(&RenderStyle::flexPack, &RenderStyle::setFlexPack, &RenderStyle::initialFlexPack));
     990    setPropertyHandler(CSSPropertyWebkitFlexAlign, new ApplyPropertyDefault<EFlexAlign>(&RenderStyle::flexAlign, &RenderStyle::setFlexAlign, &RenderStyle::initialFlexAlign));
    990991#endif
    991992
  • trunk/Source/WebCore/css/CSSStyleSelector.cpp

    r93848 r93908  
    49784978    case CSSPropertyWebkitFlexOrder:
    49794979    case CSSPropertyWebkitFlexPack:
     4980    case CSSPropertyWebkitFlexAlign:
    49804981#endif
    49814982    case CSSPropertyFontStyle:
  • trunk/Source/WebCore/css/CSSValueKeywords.in

    r92792 r93908  
    472472multiple
    473473
     474// CSS_PROP_FLEX_ALIGN
     475before
     476after
     477// middle
     478// stretch
     479// baseline
     480
    474481// CSS_PROP_MARQUEE_DIRECTION
    475482forwards
  • trunk/Source/WebCore/rendering/style/RenderStyle.h

    r93807 r93908  
    680680    int flexOrder() const { return rareNonInheritedData->m_flexibleBox->m_flexOrder; }
    681681    EFlexPack flexPack() const { return static_cast<EFlexPack>(rareNonInheritedData->m_flexibleBox->m_flexPack); }
     682    EFlexAlign flexAlign() const { return static_cast<EFlexAlign>(rareNonInheritedData->m_flexibleBox->m_flexAlign); }
    682683#endif
    683684
     
    10661067    void setFlexOrder(int o) { SET_VAR(rareNonInheritedData.access()->m_flexibleBox, m_flexOrder, o); }
    10671068    void setFlexPack(EFlexPack p) { SET_VAR(rareNonInheritedData.access()->m_flexibleBox, m_flexPack, p); }
     1069    void setFlexAlign(EFlexAlign a) { SET_VAR(rareNonInheritedData.access()->m_flexibleBox, m_flexAlign, a); }
    10681070#endif
    10691071    void setMarqueeIncrement(const Length& f) { SET_VAR(rareNonInheritedData.access()->m_marquee, increment, f); }
     
    13461348    static int initialFlexOrder() { return 1; }
    13471349    static EFlexPack initialFlexPack() { return PackStart; }
     1350    static EFlexAlign initialFlexAlign() { return AlignStretch; }
    13481351    static int initialMarqueeLoopCount() { return -1; }
    13491352    static int initialMarqueeSpeed() { return 85; }
  • trunk/Source/WebCore/rendering/style/RenderStyleConstants.h

    r93551 r93908  
    170170
    171171enum EFlexPack { PackStart, PackEnd, PackCenter, PackJustify };
     172enum EFlexAlign { AlignBefore, AlignAfter, AlignMiddle, AlignStretch, AlignBaseline };
    172173
    173174enum ETextSecurity {
  • trunk/Source/WebCore/rendering/style/StyleFlexibleBoxData.cpp

    r93551 r93908  
    4040    , m_flexOrder(RenderStyle::initialFlexOrder())
    4141    , m_flexPack(RenderStyle::initialFlexPack())
     42    , m_flexAlign(RenderStyle::initialFlexAlign())
    4243{
    4344}
     
    5152    , m_flexOrder(o.m_flexOrder)
    5253    , m_flexPack(o.m_flexPack)
     54    , m_flexAlign(o.m_flexAlign)
    5355{
    5456}
     
    5860    return m_widthPositiveFlex == o.m_widthPositiveFlex && m_widthNegativeFlex == o.m_widthNegativeFlex
    5961        && m_heightPositiveFlex == o.m_heightPositiveFlex && m_heightNegativeFlex == o.m_heightNegativeFlex
    60         && m_flexOrder == o.m_flexOrder && m_flexPack == o.m_flexPack;
     62        && m_flexOrder == o.m_flexOrder && m_flexPack == o.m_flexPack && m_flexAlign == o.m_flexAlign;
    6163}
    6264
  • trunk/Source/WebCore/rendering/style/StyleFlexibleBoxData.h

    r93551 r93908  
    5353
    5454    unsigned m_flexPack : 2; // EFlexPack
     55    unsigned m_flexAlign : 3; // EFlexAlign
    5556
    5657private:
Note: See TracChangeset for help on using the changeset viewer.