Changeset 93551 in webkit


Ignore:
Timestamp:
Aug 22, 2011 3:20:17 PM (13 years ago)
Author:
tony@chromium.org
Message:

Add CSS parsing of -webkit-flex-pack
https://bugs.webkit.org/show_bug.cgi?id=66701

Reviewed by Eric Seidel.

Source/WebCore:

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):

  • css/CSSParser.cpp:

(WebCore::CSSParser::parseValue):

  • css/CSSPrimitiveValueMappings.h:

(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator EFlexPack):

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

(WebCore::CSSStyleApplyProperty::CSSStyleApplyProperty):

  • css/CSSStyleSelector.cpp:

(WebCore::CSSStyleSelector::applyProperty):

  • rendering/style/RenderStyle.h:

(WebCore::InheritedFlags::flexPack):
(WebCore::InheritedFlags::setFlexPack):
(WebCore::InheritedFlags::initialFlexPack):

  • 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:
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r93549 r93551  
     12011-08-22  Tony Chang  <tony@chromium.org>
     2
     3        Add CSS parsing of -webkit-flex-pack
     4        https://bugs.webkit.org/show_bug.cgi?id=66701
     5
     6        Reviewed by Eric Seidel.
     7
     8        * css3/flexbox/css-properties-expected.txt:
     9        * css3/flexbox/script-tests/css-properties.js:
     10
    1112011-08-22  Ryosuke Niwa  <rniwa@webkit.org>
    212
  • trunk/LayoutTests/css3/flexbox/css-properties-expected.txt

    r93528 r93551  
    44
    55
    6 PASS div.style.display is "-webkit-flexbox"
    7 PASS div.style.display is "inline"
    8 PASS div.style.display is "-webkit-inline-flexbox"
    9 PASS div.style.display is "-webkit-inline-flexbox"
    10 PASS div.style.display is "block"
     6PASS flexbox.style.display is "-webkit-flexbox"
     7PASS flexbox.style.display is "inline"
     8PASS flexbox.style.display is "-webkit-inline-flexbox"
     9PASS flexbox.style.display is "-webkit-inline-flexbox"
     10PASS flexbox.style.display is "block"
    1111PASS flexitem.style.webkitFlexOrder is ""
    1212PASS flexitem.style.webkitFlexOrder is "2"
     
    1616PASS flexitem.style.webkitFlexOrder is "0"
    1717PASS flexitem.style.webkitFlexOrder is ""
     18PASS flexbox.style.webkitFlexPack is ""
     19PASS window.getComputedStyle(flexbox, null).webkitFlexPack is "start"
     20PASS flexbox.style.webkitFlexPack is ""
     21PASS flexbox.style.webkitFlexPack is "start"
     22PASS window.getComputedStyle(flexbox, null).webkitFlexPack is "start"
     23PASS flexbox.style.webkitFlexPack is "end"
     24PASS window.getComputedStyle(flexbox, null).webkitFlexPack is "end"
     25PASS flexbox.style.webkitFlexPack is "center"
     26PASS window.getComputedStyle(flexbox, null).webkitFlexPack is "center"
     27PASS flexbox.style.webkitFlexPack is "justify"
     28PASS window.getComputedStyle(flexbox, null).webkitFlexPack is "justify"
     29PASS flexbox.style.webkitFlexPack is ""
     30PASS window.getComputedStyle(flexbox, null).webkitFlexPack is "start"
    1831PASS successfullyParsed is true
    1932
  • trunk/LayoutTests/css3/flexbox/script-tests/css-properties.js

    r93528 r93551  
    11description('Tests being able to set the display to -webkit-flexbox and -webkit-inline-flexbox.');
    22
    3 var div = document.getElementById("flexbox");
     3var flexbox = document.getElementById("flexbox");
    44
    5 div.style.display = '-webkit-flexbox';
    6 shouldBeEqualToString('div.style.display', '-webkit-flexbox');
     5flexbox.style.display = '-webkit-flexbox';
     6shouldBeEqualToString('flexbox.style.display', '-webkit-flexbox');
    77
    8 div.style.display = 'inline';
    9 shouldBeEqualToString('div.style.display', 'inline');
     8flexbox.style.display = 'inline';
     9shouldBeEqualToString('flexbox.style.display', 'inline');
    1010
    11 div.style.display = '-webkit-inline-flexbox';
    12 shouldBeEqualToString('div.style.display', '-webkit-inline-flexbox');
     11flexbox.style.display = '-webkit-inline-flexbox';
     12shouldBeEqualToString('flexbox.style.display', '-webkit-inline-flexbox');
    1313
    14 div.style.display = 'junk';
    15 shouldBeEqualToString('div.style.display', '-webkit-inline-flexbox');
     14flexbox.style.display = 'junk';
     15shouldBeEqualToString('flexbox.style.display', '-webkit-inline-flexbox');
    1616
    17 div.style.display = 'block';
    18 shouldBeEqualToString('div.style.display', 'block');
     17flexbox.style.display = 'block';
     18shouldBeEqualToString('flexbox.style.display', 'block');
     19
    1920
    2021var flexitem = document.getElementById("flexitem");
     
    4041shouldBeEqualToString('flexitem.style.webkitFlexOrder', '');
    4142
     43
     44shouldBeEqualToString('flexbox.style.webkitFlexPack', '');
     45// The initial value is 'start'.
     46shouldBeEqualToString('window.getComputedStyle(flexbox, null).webkitFlexPack', 'start');
     47
     48flexbox.style.webkitFlexPack = 'foo';
     49shouldBeEqualToString('flexbox.style.webkitFlexPack', '');
     50
     51flexbox.style.webkitFlexPack = 'start';
     52shouldBeEqualToString('flexbox.style.webkitFlexPack', 'start');
     53shouldBeEqualToString('window.getComputedStyle(flexbox, null).webkitFlexPack', 'start');
     54
     55flexbox.style.webkitFlexPack = 'end';
     56shouldBeEqualToString('flexbox.style.webkitFlexPack', 'end');
     57shouldBeEqualToString('window.getComputedStyle(flexbox, null).webkitFlexPack', 'end');
     58
     59flexbox.style.webkitFlexPack = 'center';
     60shouldBeEqualToString('flexbox.style.webkitFlexPack', 'center');
     61shouldBeEqualToString('window.getComputedStyle(flexbox, null).webkitFlexPack', 'center');
     62
     63flexbox.style.webkitFlexPack = 'justify';
     64shouldBeEqualToString('flexbox.style.webkitFlexPack', 'justify');
     65shouldBeEqualToString('window.getComputedStyle(flexbox, null).webkitFlexPack', 'justify');
     66
     67flexbox.style.webkitFlexPack = '';
     68shouldBeEqualToString('flexbox.style.webkitFlexPack', '');
     69shouldBeEqualToString('window.getComputedStyle(flexbox, null).webkitFlexPack', 'start');
     70
    4271successfullyParsed = true;
  • trunk/Source/WebCore/ChangeLog

    r93547 r93551  
     12011-08-22  Tony Chang  <tony@chromium.org>
     2
     3        Add CSS parsing of -webkit-flex-pack
     4        https://bugs.webkit.org/show_bug.cgi?id=66701
     5
     6        Reviewed by Eric Seidel.
     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 EFlexPack):
     15        * css/CSSPropertyNames.in:
     16        * css/CSSStyleApplyProperty.cpp:
     17        (WebCore::CSSStyleApplyProperty::CSSStyleApplyProperty):
     18        * css/CSSStyleSelector.cpp:
     19        (WebCore::CSSStyleSelector::applyProperty):
     20        * rendering/style/RenderStyle.h:
     21        (WebCore::InheritedFlags::flexPack):
     22        (WebCore::InheritedFlags::setFlexPack):
     23        (WebCore::InheritedFlags::initialFlexPack):
     24        * rendering/style/RenderStyleConstants.h:
     25        * rendering/style/StyleFlexibleBoxData.cpp:
     26        (WebCore::StyleFlexibleBoxData::StyleFlexibleBoxData):
     27        (WebCore::StyleFlexibleBoxData::operator==):
     28        * rendering/style/StyleFlexibleBoxData.h:
     29
    1302011-08-22  Tony Chang  <tony@chromium.org>
    231
  • trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp

    r93528 r93551  
    202202#if ENABLE(CSS3_FLEXBOX)
    203203    CSSPropertyWebkitFlexOrder,
     204    CSSPropertyWebkitFlexPack,
    204205#endif
    205206    CSSPropertyWebkitFontSmoothing,
     
    11061107        case CSSPropertyWebkitFlexOrder:
    11071108            return primitiveValueCache->createValue(style->flexOrder(), CSSPrimitiveValue::CSS_NUMBER);
     1109        case CSSPropertyWebkitFlexPack:
     1110            return primitiveValueCache->createValue(style->flexPack());
    11081111#endif
    11091112        case CSSPropertyFloat:
  • trunk/Source/WebCore/css/CSSParser.cpp

    r93528 r93551  
    15401540    case CSSPropertyWebkitFlexOrder:
    15411541        validPrimitive = validUnit(value, FInteger, true);
     1542        break;
     1543    case CSSPropertyWebkitFlexPack:
     1544        validPrimitive = id == CSSValueStart || id == CSSValueEnd || id == CSSValueCenter || id == CSSValueJustify;
    15421545        break;
    15431546#endif
  • trunk/Source/WebCore/css/CSSPrimitiveValueMappings.h

    r93263 r93551  
    10361036}
    10371037
     1038template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EFlexPack e)
     1039    : m_type(CSS_IDENT)
     1040    , m_hasCachedCSSText(false)
     1041{
     1042    switch (e) {
     1043    case PackStart:
     1044        m_value.ident = CSSValueStart;
     1045        break;
     1046    case PackEnd:
     1047        m_value.ident = CSSValueEnd;
     1048        break;
     1049    case PackCenter:
     1050        m_value.ident = CSSValueCenter;
     1051        break;
     1052    case PackJustify:
     1053        m_value.ident = CSSValueJustify;
     1054        break;
     1055    }
     1056}
     1057
     1058template<> inline CSSPrimitiveValue::operator EFlexPack() const
     1059{
     1060    switch (m_value.ident) {
     1061    case CSSValueStart:
     1062        return PackStart;
     1063    case CSSValueEnd:
     1064        return PackEnd;
     1065    case CSSValueCenter:
     1066        return PackCenter;
     1067    case CSSValueJustify:
     1068        return PackJustify;
     1069    default:
     1070        ASSERT_NOT_REACHED();
     1071        return PackStart;
     1072    }
     1073}
     1074
    10381075template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EFloat e)
    10391076    : m_type(CSS_IDENT)
  • trunk/Source/WebCore/css/CSSPropertyNames.in

    r93528 r93551  
    245245#if defined(ENABLE_CSS3_FLEXBOX) && ENABLE_CSS3_FLEXBOX
    246246-webkit-flex-order
     247-webkit-flex-pack
    247248#endif
    248249-webkit-font-size-delta
  • trunk/Source/WebCore/css/CSSStyleApplyProperty.cpp

    r93528 r93551  
    892892#if ENABLE(CSS3_FLEXBOX)
    893893    setPropertyHandler(CSSPropertyWebkitFlexOrder, new ApplyPropertyDefault<int>(&RenderStyle::flexOrder, &RenderStyle::setFlexOrder, &RenderStyle::initialFlexOrder));
     894    setPropertyHandler(CSSPropertyWebkitFlexPack, new ApplyPropertyDefault<EFlexPack>(&RenderStyle::flexPack, &RenderStyle::setFlexPack, &RenderStyle::initialFlexPack));
    894895#endif
    895896
  • trunk/Source/WebCore/css/CSSStyleSelector.cpp

    r93528 r93551  
    51135113#if ENABLE(CSS3_FLEXBOX)
    51145114    case CSSPropertyWebkitFlexOrder:
     5115    case CSSPropertyWebkitFlexPack:
    51155116#endif
    51165117    case CSSPropertyFontStyle:
  • trunk/Source/WebCore/rendering/style/RenderStyle.h

    r93528 r93551  
    678678    float flexboxHeightNegativeFlex() const { return rareNonInheritedData->m_flexibleBox->m_heightNegativeFlex; }
    679679    int flexOrder() const { return rareNonInheritedData->m_flexibleBox->m_flexOrder; }
     680    EFlexPack flexPack() const { return static_cast<EFlexPack>(rareNonInheritedData->m_flexibleBox->m_flexPack); }
    680681#endif
    681682
     
    10631064    void setFlexboxHeightNegativeFlex(float f) { SET_VAR(rareNonInheritedData.access()->m_flexibleBox, m_heightNegativeFlex, f); }
    10641065    void setFlexOrder(int o) { SET_VAR(rareNonInheritedData.access()->m_flexibleBox, m_flexOrder, o); }
     1066    void setFlexPack(EFlexPack p) { SET_VAR(rareNonInheritedData.access()->m_flexibleBox, m_flexPack, p); }
    10651067#endif
    10661068    void setMarqueeIncrement(const Length& f) { SET_VAR(rareNonInheritedData.access()->m_marquee, increment, f); }
     
    13181320    static float initialFlexboxHeightNegativeFlex() { return 0; }
    13191321    static int initialFlexOrder() { return 1; }
     1322    static EFlexPack initialFlexPack() { return PackStart; }
    13201323    static int initialMarqueeLoopCount() { return -1; }
    13211324    static int initialMarqueeSpeed() { return 85; }
  • trunk/Source/WebCore/rendering/style/RenderStyleConstants.h

    r93195 r93551  
    160160enum EMarqueeDirection { MAUTO = 0, MLEFT = 1, MRIGHT = -1, MUP = 2, MDOWN = -2, MFORWARD = 3, MBACKWARD = -3 };
    161161
    162 // CSS3 Flexible Box Properties
     162// Deprecated Flexible Box Properties
    163163
    164164enum EBoxAlignment { BSTRETCH, BSTART, BCENTER, BEND, BJUSTIFY, BBASELINE };
     
    166166enum EBoxLines { SINGLE, MULTIPLE };
    167167enum EBoxDirection { BNORMAL, BREVERSE };
     168
     169// CSS3 Flexbox Properties
     170
     171enum EFlexPack { PackStart, PackEnd, PackCenter, PackJustify };
    168172
    169173enum ETextSecurity {
  • trunk/Source/WebCore/rendering/style/StyleFlexibleBoxData.cpp

    r93528 r93551  
    3939    , m_heightNegativeFlex(RenderStyle::initialFlexboxHeightNegativeFlex())
    4040    , m_flexOrder(RenderStyle::initialFlexOrder())
     41    , m_flexPack(RenderStyle::initialFlexPack())
    4142{
    4243}
     
    4950    , m_heightNegativeFlex(o.m_heightNegativeFlex)
    5051    , m_flexOrder(o.m_flexOrder)
     52    , m_flexPack(o.m_flexPack)
    5153{
    5254}
     
    5658    return m_widthPositiveFlex == o.m_widthPositiveFlex && m_widthNegativeFlex == o.m_widthNegativeFlex
    5759        && m_heightPositiveFlex == o.m_heightPositiveFlex && m_heightNegativeFlex == o.m_heightNegativeFlex
    58         && m_flexOrder == o.m_flexOrder;
     60        && m_flexOrder == o.m_flexOrder && m_flexPack == o.m_flexPack;
    5961}
    6062
  • trunk/Source/WebCore/rendering/style/StyleFlexibleBoxData.h

    r93528 r93551  
    5252    int m_flexOrder;
    5353
     54    unsigned m_flexPack : 2; // EFlexPack
     55
    5456private:
    5557    StyleFlexibleBoxData();
Note: See TracChangeset for help on using the changeset viewer.