Home | History | Annotate | Download | only in css
      1 /**
      2  * (C) 1999-2003 Lars Knoll (knoll (at) kde.org)
      3  * Copyright (C) 2004, 2005, 2006 Apple Computer, Inc.
      4  *
      5  * This library is free software; you can redistribute it and/or
      6  * modify it under the terms of the GNU Library General Public
      7  * License as published by the Free Software Foundation; either
      8  * version 2 of the License, or (at your option) any later version.
      9  *
     10  * This library is distributed in the hope that it will be useful,
     11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     13  * Library General Public License for more details.
     14  *
     15  * You should have received a copy of the GNU Library General Public License
     16  * along with this library; see the file COPYING.LIB.  If not, write to
     17  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
     18  * Boston, MA 02110-1301, USA.
     19  */
     20 
     21 #include "config.h"
     22 #include "core/css/CSSProperty.h"
     23 
     24 #include "StylePropertyShorthand.h"
     25 #include "core/css/CSSValueList.h"
     26 #include "core/rendering/style/RenderStyleConstants.h"
     27 
     28 namespace WebCore {
     29 
     30 struct SameSizeAsCSSProperty {
     31     uint32_t bitfields;
     32     void* value;
     33 };
     34 
     35 COMPILE_ASSERT(sizeof(CSSProperty) == sizeof(SameSizeAsCSSProperty), CSSProperty_should_stay_small);
     36 
     37 CSSPropertyID StylePropertyMetadata::shorthandID() const
     38 {
     39     if (!m_isSetFromShorthand)
     40         return CSSPropertyInvalid;
     41 
     42     const Vector<StylePropertyShorthand> shorthands = matchingShorthandsForLonghand(static_cast<CSSPropertyID>(m_propertyID));
     43     ASSERT(shorthands.size() && m_indexInShorthandsVector >= 0 && m_indexInShorthandsVector < shorthands.size());
     44     return shorthands.at(m_indexInShorthandsVector).id();
     45 }
     46 
     47 void CSSProperty::wrapValueInCommaSeparatedList()
     48 {
     49     RefPtr<CSSValue> value = m_value.release();
     50     m_value = CSSValueList::createCommaSeparated();
     51     toCSSValueList(m_value.get())->append(value.release());
     52 }
     53 
     54 enum LogicalBoxSide { BeforeSide, EndSide, AfterSide, StartSide };
     55 enum PhysicalBoxSide { TopSide, RightSide, BottomSide, LeftSide };
     56 
     57 static CSSPropertyID resolveToPhysicalProperty(TextDirection direction, WritingMode writingMode, LogicalBoxSide logicalSide, const StylePropertyShorthand& shorthand)
     58 {
     59     if (direction == LTR) {
     60         if (writingMode == TopToBottomWritingMode) {
     61             // The common case. The logical and physical box sides match.
     62             // Left = Start, Right = End, Before = Top, After = Bottom
     63             return shorthand.properties()[logicalSide];
     64         }
     65 
     66         if (writingMode == BottomToTopWritingMode) {
     67             // Start = Left, End = Right, Before = Bottom, After = Top.
     68             switch (logicalSide) {
     69             case StartSide:
     70                 return shorthand.properties()[LeftSide];
     71             case EndSide:
     72                 return shorthand.properties()[RightSide];
     73             case BeforeSide:
     74                 return shorthand.properties()[BottomSide];
     75             default:
     76                 return shorthand.properties()[TopSide];
     77             }
     78         }
     79 
     80         if (writingMode == LeftToRightWritingMode) {
     81             // Start = Top, End = Bottom, Before = Left, After = Right.
     82             switch (logicalSide) {
     83             case StartSide:
     84                 return shorthand.properties()[TopSide];
     85             case EndSide:
     86                 return shorthand.properties()[BottomSide];
     87             case BeforeSide:
     88                 return shorthand.properties()[LeftSide];
     89             default:
     90                 return shorthand.properties()[RightSide];
     91             }
     92         }
     93 
     94         // Start = Top, End = Bottom, Before = Right, After = Left
     95         switch (logicalSide) {
     96         case StartSide:
     97             return shorthand.properties()[TopSide];
     98         case EndSide:
     99             return shorthand.properties()[BottomSide];
    100         case BeforeSide:
    101             return shorthand.properties()[RightSide];
    102         default:
    103             return shorthand.properties()[LeftSide];
    104         }
    105     }
    106 
    107     if (writingMode == TopToBottomWritingMode) {
    108         // Start = Right, End = Left, Before = Top, After = Bottom
    109         switch (logicalSide) {
    110         case StartSide:
    111             return shorthand.properties()[RightSide];
    112         case EndSide:
    113             return shorthand.properties()[LeftSide];
    114         case BeforeSide:
    115             return shorthand.properties()[TopSide];
    116         default:
    117             return shorthand.properties()[BottomSide];
    118         }
    119     }
    120 
    121     if (writingMode == BottomToTopWritingMode) {
    122         // Start = Right, End = Left, Before = Bottom, After = Top
    123         switch (logicalSide) {
    124         case StartSide:
    125             return shorthand.properties()[RightSide];
    126         case EndSide:
    127             return shorthand.properties()[LeftSide];
    128         case BeforeSide:
    129             return shorthand.properties()[BottomSide];
    130         default:
    131             return shorthand.properties()[TopSide];
    132         }
    133     }
    134 
    135     if (writingMode == LeftToRightWritingMode) {
    136         // Start = Bottom, End = Top, Before = Left, After = Right
    137         switch (logicalSide) {
    138         case StartSide:
    139             return shorthand.properties()[BottomSide];
    140         case EndSide:
    141             return shorthand.properties()[TopSide];
    142         case BeforeSide:
    143             return shorthand.properties()[LeftSide];
    144         default:
    145             return shorthand.properties()[RightSide];
    146         }
    147     }
    148 
    149     // Start = Bottom, End = Top, Before = Right, After = Left
    150     switch (logicalSide) {
    151     case StartSide:
    152         return shorthand.properties()[BottomSide];
    153     case EndSide:
    154         return shorthand.properties()[TopSide];
    155     case BeforeSide:
    156         return shorthand.properties()[RightSide];
    157     default:
    158         return shorthand.properties()[LeftSide];
    159     }
    160 }
    161 
    162 enum LogicalExtent { LogicalWidth, LogicalHeight };
    163 
    164 static CSSPropertyID resolveToPhysicalProperty(WritingMode writingMode, LogicalExtent logicalSide, const CSSPropertyID* properties)
    165 {
    166     if (writingMode == TopToBottomWritingMode || writingMode == BottomToTopWritingMode)
    167         return properties[logicalSide];
    168     return logicalSide == LogicalWidth ? properties[1] : properties[0];
    169 }
    170 
    171 static const StylePropertyShorthand& borderDirections()
    172 {
    173     static const CSSPropertyID properties[4] = { CSSPropertyBorderTop, CSSPropertyBorderRight, CSSPropertyBorderBottom, CSSPropertyBorderLeft };
    174     DEFINE_STATIC_LOCAL(StylePropertyShorthand, borderDirections, (CSSPropertyBorder, properties, WTF_ARRAY_LENGTH(properties)));
    175     return borderDirections;
    176 }
    177 
    178 CSSPropertyID CSSProperty::resolveDirectionAwareProperty(CSSPropertyID propertyID, TextDirection direction, WritingMode writingMode)
    179 {
    180     switch (propertyID) {
    181     case CSSPropertyWebkitMarginEnd:
    182         return resolveToPhysicalProperty(direction, writingMode, EndSide, marginShorthand());
    183     case CSSPropertyWebkitMarginStart:
    184         return resolveToPhysicalProperty(direction, writingMode, StartSide, marginShorthand());
    185     case CSSPropertyWebkitMarginBefore:
    186         return resolveToPhysicalProperty(direction, writingMode, BeforeSide, marginShorthand());
    187     case CSSPropertyWebkitMarginAfter:
    188         return resolveToPhysicalProperty(direction, writingMode, AfterSide, marginShorthand());
    189     case CSSPropertyWebkitPaddingEnd:
    190         return resolveToPhysicalProperty(direction, writingMode, EndSide, paddingShorthand());
    191     case CSSPropertyWebkitPaddingStart:
    192         return resolveToPhysicalProperty(direction, writingMode, StartSide, paddingShorthand());
    193     case CSSPropertyWebkitPaddingBefore:
    194         return resolveToPhysicalProperty(direction, writingMode, BeforeSide, paddingShorthand());
    195     case CSSPropertyWebkitPaddingAfter:
    196         return resolveToPhysicalProperty(direction, writingMode, AfterSide, paddingShorthand());
    197     case CSSPropertyWebkitBorderEnd:
    198         return resolveToPhysicalProperty(direction, writingMode, EndSide, borderDirections());
    199     case CSSPropertyWebkitBorderStart:
    200         return resolveToPhysicalProperty(direction, writingMode, StartSide, borderDirections());
    201     case CSSPropertyWebkitBorderBefore:
    202         return resolveToPhysicalProperty(direction, writingMode, BeforeSide, borderDirections());
    203     case CSSPropertyWebkitBorderAfter:
    204         return resolveToPhysicalProperty(direction, writingMode, AfterSide, borderDirections());
    205     case CSSPropertyWebkitBorderEndColor:
    206         return resolveToPhysicalProperty(direction, writingMode, EndSide, borderColorShorthand());
    207     case CSSPropertyWebkitBorderStartColor:
    208         return resolveToPhysicalProperty(direction, writingMode, StartSide, borderColorShorthand());
    209     case CSSPropertyWebkitBorderBeforeColor:
    210         return resolveToPhysicalProperty(direction, writingMode, BeforeSide, borderColorShorthand());
    211     case CSSPropertyWebkitBorderAfterColor:
    212         return resolveToPhysicalProperty(direction, writingMode, AfterSide, borderColorShorthand());
    213     case CSSPropertyWebkitBorderEndStyle:
    214         return resolveToPhysicalProperty(direction, writingMode, EndSide, borderStyleShorthand());
    215     case CSSPropertyWebkitBorderStartStyle:
    216         return resolveToPhysicalProperty(direction, writingMode, StartSide, borderStyleShorthand());
    217     case CSSPropertyWebkitBorderBeforeStyle:
    218         return resolveToPhysicalProperty(direction, writingMode, BeforeSide, borderStyleShorthand());
    219     case CSSPropertyWebkitBorderAfterStyle:
    220         return resolveToPhysicalProperty(direction, writingMode, AfterSide, borderStyleShorthand());
    221     case CSSPropertyWebkitBorderEndWidth:
    222         return resolveToPhysicalProperty(direction, writingMode, EndSide, borderWidthShorthand());
    223     case CSSPropertyWebkitBorderStartWidth:
    224         return resolveToPhysicalProperty(direction, writingMode, StartSide, borderWidthShorthand());
    225     case CSSPropertyWebkitBorderBeforeWidth:
    226         return resolveToPhysicalProperty(direction, writingMode, BeforeSide, borderWidthShorthand());
    227     case CSSPropertyWebkitBorderAfterWidth:
    228         return resolveToPhysicalProperty(direction, writingMode, AfterSide, borderWidthShorthand());
    229     case CSSPropertyWebkitLogicalWidth: {
    230         const CSSPropertyID properties[2] = { CSSPropertyWidth, CSSPropertyHeight };
    231         return resolveToPhysicalProperty(writingMode, LogicalWidth, properties);
    232     }
    233     case CSSPropertyWebkitLogicalHeight: {
    234         const CSSPropertyID properties[2] = { CSSPropertyWidth, CSSPropertyHeight };
    235         return resolveToPhysicalProperty(writingMode, LogicalHeight, properties);
    236     }
    237     case CSSPropertyWebkitMinLogicalWidth: {
    238         const CSSPropertyID properties[2] = { CSSPropertyMinWidth, CSSPropertyMinHeight };
    239         return resolveToPhysicalProperty(writingMode, LogicalWidth, properties);
    240     }
    241     case CSSPropertyWebkitMinLogicalHeight: {
    242         const CSSPropertyID properties[2] = { CSSPropertyMinWidth, CSSPropertyMinHeight };
    243         return resolveToPhysicalProperty(writingMode, LogicalHeight, properties);
    244     }
    245     case CSSPropertyWebkitMaxLogicalWidth: {
    246         const CSSPropertyID properties[2] = { CSSPropertyMaxWidth, CSSPropertyMaxHeight };
    247         return resolveToPhysicalProperty(writingMode, LogicalWidth, properties);
    248     }
    249     case CSSPropertyWebkitMaxLogicalHeight: {
    250         const CSSPropertyID properties[2] = { CSSPropertyMaxWidth, CSSPropertyMaxHeight };
    251         return resolveToPhysicalProperty(writingMode, LogicalHeight, properties);
    252     }
    253     default:
    254         return propertyID;
    255     }
    256 }
    257 
    258 bool CSSProperty::isInheritedProperty(CSSPropertyID propertyID)
    259 {
    260     switch (propertyID) {
    261     case CSSPropertyBorderCollapse:
    262     case CSSPropertyBorderSpacing:
    263     case CSSPropertyCaptionSide:
    264     case CSSPropertyClipRule:
    265     case CSSPropertyColor:
    266     case CSSPropertyColorInterpolation:
    267     case CSSPropertyColorInterpolationFilters:
    268     case CSSPropertyColorRendering:
    269     case CSSPropertyCursor:
    270     case CSSPropertyDirection:
    271     case CSSPropertyEmptyCells:
    272     case CSSPropertyFill:
    273     case CSSPropertyFillOpacity:
    274     case CSSPropertyFillRule:
    275     case CSSPropertyFont:
    276     case CSSPropertyFontFamily:
    277     case CSSPropertyFontSize:
    278     case CSSPropertyFontStyle:
    279     case CSSPropertyFontVariant:
    280     case CSSPropertyFontWeight:
    281     case CSSPropertyGlyphOrientationHorizontal:
    282     case CSSPropertyGlyphOrientationVertical:
    283     case CSSPropertyImageRendering:
    284     case CSSPropertyKerning:
    285     case CSSPropertyLetterSpacing:
    286     case CSSPropertyLineHeight:
    287     case CSSPropertyListStyle:
    288     case CSSPropertyListStyleImage:
    289     case CSSPropertyListStylePosition:
    290     case CSSPropertyListStyleType:
    291     case CSSPropertyMarker:
    292     case CSSPropertyMarkerEnd:
    293     case CSSPropertyMarkerMid:
    294     case CSSPropertyMarkerStart:
    295     case CSSPropertyOrphans:
    296     case CSSPropertyPointerEvents:
    297     case CSSPropertyQuotes:
    298     case CSSPropertyResize:
    299     case CSSPropertyShapeRendering:
    300     case CSSPropertySpeak:
    301     case CSSPropertyStroke:
    302     case CSSPropertyStrokeDasharray:
    303     case CSSPropertyStrokeDashoffset:
    304     case CSSPropertyStrokeLinecap:
    305     case CSSPropertyStrokeLinejoin:
    306     case CSSPropertyStrokeMiterlimit:
    307     case CSSPropertyStrokeOpacity:
    308     case CSSPropertyStrokeWidth:
    309     case CSSPropertyTabSize:
    310     case CSSPropertyTextAlign:
    311     case CSSPropertyTextAlignLast:
    312     case CSSPropertyTextAnchor:
    313     case CSSPropertyTextIndent:
    314     case CSSPropertyTextRendering:
    315     case CSSPropertyTextShadow:
    316     case CSSPropertyTextTransform:
    317     case CSSPropertyVariable:
    318     case CSSPropertyVisibility:
    319     case CSSPropertyWebkitAspectRatio:
    320     case CSSPropertyWebkitBorderHorizontalSpacing:
    321     case CSSPropertyWebkitBorderVerticalSpacing:
    322     case CSSPropertyWebkitBoxDirection:
    323     case CSSPropertyWebkitFontFeatureSettings:
    324     case CSSPropertyWebkitFontKerning:
    325     case CSSPropertyWebkitFontSmoothing:
    326     case CSSPropertyWebkitFontVariantLigatures:
    327     case CSSPropertyWebkitLocale:
    328     case CSSPropertyWebkitHighlight:
    329     case CSSPropertyWebkitHyphenateCharacter:
    330     case CSSPropertyWebkitLineAlign:
    331     case CSSPropertyWebkitLineBoxContain:
    332     case CSSPropertyWebkitLineBreak:
    333     case CSSPropertyWebkitLineGrid:
    334     case CSSPropertyWebkitLineSnap:
    335     case CSSPropertyWebkitPrintColorAdjust:
    336     case CSSPropertyWebkitRtlOrdering:
    337     case CSSPropertyWebkitRubyPosition:
    338     case CSSPropertyWebkitTapHighlightColor:
    339     case CSSPropertyWebkitTextCombine:
    340 #if ENABLE(CSS3_TEXT)
    341     case CSSPropertyWebkitTextUnderlinePosition:
    342 #endif // CSS3_TEXT
    343     case CSSPropertyWebkitTextDecorationsInEffect:
    344     case CSSPropertyWebkitTextEmphasis:
    345     case CSSPropertyWebkitTextEmphasisColor:
    346     case CSSPropertyWebkitTextEmphasisPosition:
    347     case CSSPropertyWebkitTextEmphasisStyle:
    348     case CSSPropertyWebkitTextFillColor:
    349     case CSSPropertyWebkitTextOrientation:
    350     case CSSPropertyWebkitTextSecurity:
    351     case CSSPropertyWebkitTextStroke:
    352     case CSSPropertyWebkitTextStrokeColor:
    353     case CSSPropertyWebkitTextStrokeWidth:
    354     case CSSPropertyWebkitUserModify:
    355     case CSSPropertyWebkitUserSelect:
    356     case CSSPropertyWebkitWritingMode:
    357     case CSSPropertyWhiteSpace:
    358     case CSSPropertyWidows:
    359     case CSSPropertyWordBreak:
    360     case CSSPropertyWordSpacing:
    361     case CSSPropertyWordWrap:
    362     case CSSPropertyWritingMode:
    363         return true;
    364     case CSSPropertyAlignmentBaseline:
    365     case CSSPropertyBackground:
    366     case CSSPropertyBackgroundAttachment:
    367     case CSSPropertyBackgroundBlendMode:
    368     case CSSPropertyBackgroundClip:
    369     case CSSPropertyBackgroundColor:
    370     case CSSPropertyBackgroundImage:
    371     case CSSPropertyBackgroundOrigin:
    372     case CSSPropertyBackgroundPosition:
    373     case CSSPropertyBackgroundPositionX:
    374     case CSSPropertyBackgroundPositionY:
    375     case CSSPropertyBackgroundRepeat:
    376     case CSSPropertyBackgroundRepeatX:
    377     case CSSPropertyBackgroundRepeatY:
    378     case CSSPropertyBackgroundSize:
    379     case CSSPropertyBaselineShift:
    380     case CSSPropertyBorder:
    381     case CSSPropertyBorderBottom:
    382     case CSSPropertyBorderBottomColor:
    383     case CSSPropertyBorderBottomLeftRadius:
    384     case CSSPropertyBorderBottomRightRadius:
    385     case CSSPropertyBorderBottomStyle:
    386     case CSSPropertyBorderBottomWidth:
    387     case CSSPropertyBorderColor:
    388     case CSSPropertyBorderImage:
    389     case CSSPropertyBorderImageOutset:
    390     case CSSPropertyBorderImageRepeat:
    391     case CSSPropertyBorderImageSlice:
    392     case CSSPropertyBorderImageSource:
    393     case CSSPropertyBorderImageWidth:
    394     case CSSPropertyBorderLeft:
    395     case CSSPropertyBorderLeftColor:
    396     case CSSPropertyBorderLeftStyle:
    397     case CSSPropertyBorderLeftWidth:
    398     case CSSPropertyBorderRadius:
    399     case CSSPropertyBorderRight:
    400     case CSSPropertyBorderRightColor:
    401     case CSSPropertyBorderRightStyle:
    402     case CSSPropertyBorderRightWidth:
    403     case CSSPropertyBorderStyle:
    404     case CSSPropertyBorderTop:
    405     case CSSPropertyBorderTopColor:
    406     case CSSPropertyBorderTopLeftRadius:
    407     case CSSPropertyBorderTopRightRadius:
    408     case CSSPropertyBorderTopStyle:
    409     case CSSPropertyBorderTopWidth:
    410     case CSSPropertyBorderWidth:
    411     case CSSPropertyBottom:
    412     case CSSPropertyBoxShadow:
    413     case CSSPropertyBoxSizing:
    414     case CSSPropertyBufferedRendering:
    415     case CSSPropertyClear:
    416     case CSSPropertyClip:
    417     case CSSPropertyClipPath:
    418     case CSSPropertyColorProfile:
    419     case CSSPropertyContent:
    420     case CSSPropertyCounterIncrement:
    421     case CSSPropertyCounterReset:
    422     case CSSPropertyDisplay:
    423     case CSSPropertyDominantBaseline:
    424     case CSSPropertyEnableBackground:
    425     case CSSPropertyFilter:
    426     case CSSPropertyFloat:
    427     case CSSPropertyFloodColor:
    428     case CSSPropertyFloodOpacity:
    429     case CSSPropertyFontStretch:
    430     case CSSPropertyHeight:
    431     case CSSPropertyLeft:
    432     case CSSPropertyLightingColor:
    433     case CSSPropertyMargin:
    434     case CSSPropertyMarginBottom:
    435     case CSSPropertyMarginLeft:
    436     case CSSPropertyMarginRight:
    437     case CSSPropertyMarginTop:
    438     case CSSPropertyMask:
    439     case CSSPropertyMaskType:
    440     case CSSPropertyMaxHeight:
    441     case CSSPropertyMaxWidth:
    442     case CSSPropertyMinHeight:
    443     case CSSPropertyMinWidth:
    444     case CSSPropertyMixBlendMode:
    445     case CSSPropertyOpacity:
    446     case CSSPropertyOutline:
    447     case CSSPropertyOutlineColor:
    448     case CSSPropertyOutlineOffset:
    449     case CSSPropertyOutlineStyle:
    450     case CSSPropertyOutlineWidth:
    451     case CSSPropertyOverflow:
    452     case CSSPropertyOverflowWrap:
    453     case CSSPropertyOverflowX:
    454     case CSSPropertyOverflowY:
    455     case CSSPropertyPadding:
    456     case CSSPropertyPaddingBottom:
    457     case CSSPropertyPaddingLeft:
    458     case CSSPropertyPaddingRight:
    459     case CSSPropertyPaddingTop:
    460     case CSSPropertyPage:
    461     case CSSPropertyPageBreakAfter:
    462     case CSSPropertyPageBreakBefore:
    463     case CSSPropertyPageBreakInside:
    464     case CSSPropertyPosition:
    465     case CSSPropertyRight:
    466     case CSSPropertySize:
    467     case CSSPropertySrc:
    468     case CSSPropertyStopColor:
    469     case CSSPropertyStopOpacity:
    470     case CSSPropertyTableLayout:
    471     case CSSPropertyTextDecoration:
    472     case CSSPropertyTextDecorationLine:
    473     case CSSPropertyTextDecorationStyle:
    474     case CSSPropertyTextDecorationColor:
    475     case CSSPropertyTextLineThroughColor:
    476     case CSSPropertyTextLineThroughMode:
    477     case CSSPropertyTextLineThroughStyle:
    478     case CSSPropertyTextLineThroughWidth:
    479     case CSSPropertyTextOverflow:
    480     case CSSPropertyTextOverlineColor:
    481     case CSSPropertyTextOverlineMode:
    482     case CSSPropertyTextOverlineStyle:
    483     case CSSPropertyTextOverlineWidth:
    484     case CSSPropertyTextUnderlineColor:
    485     case CSSPropertyTextUnderlineMode:
    486     case CSSPropertyTextUnderlineStyle:
    487     case CSSPropertyTextUnderlineWidth:
    488     case CSSPropertyTop:
    489     case CSSPropertyTouchAction:
    490     case CSSPropertyTransition:
    491     case CSSPropertyTransitionDelay:
    492     case CSSPropertyTransitionDuration:
    493     case CSSPropertyTransitionProperty:
    494     case CSSPropertyTransitionTimingFunction:
    495     case CSSPropertyUnicodeBidi:
    496     case CSSPropertyUnicodeRange:
    497     case CSSPropertyVectorEffect:
    498     case CSSPropertyVerticalAlign:
    499     case CSSPropertyAlignContent:
    500     case CSSPropertyAlignItems:
    501     case CSSPropertyAlignSelf:
    502     case CSSPropertyWebkitAnimation:
    503     case CSSPropertyWebkitAnimationDelay:
    504     case CSSPropertyWebkitAnimationDirection:
    505     case CSSPropertyWebkitAnimationDuration:
    506     case CSSPropertyWebkitAnimationFillMode:
    507     case CSSPropertyWebkitAnimationIterationCount:
    508     case CSSPropertyWebkitAnimationName:
    509     case CSSPropertyWebkitAnimationPlayState:
    510     case CSSPropertyWebkitAnimationTimingFunction:
    511     case CSSPropertyWebkitAppearance:
    512     case CSSPropertyWebkitBackfaceVisibility:
    513     case CSSPropertyWebkitBackgroundClip:
    514     case CSSPropertyWebkitBackgroundComposite:
    515     case CSSPropertyWebkitBackgroundOrigin:
    516     case CSSPropertyWebkitBackgroundSize:
    517     case CSSPropertyWebkitBorderAfter:
    518     case CSSPropertyWebkitBorderAfterColor:
    519     case CSSPropertyWebkitBorderAfterStyle:
    520     case CSSPropertyWebkitBorderAfterWidth:
    521     case CSSPropertyWebkitBorderBefore:
    522     case CSSPropertyWebkitBorderBeforeColor:
    523     case CSSPropertyWebkitBorderBeforeStyle:
    524     case CSSPropertyWebkitBorderBeforeWidth:
    525     case CSSPropertyWebkitBorderEnd:
    526     case CSSPropertyWebkitBorderEndColor:
    527     case CSSPropertyWebkitBorderEndStyle:
    528     case CSSPropertyWebkitBorderEndWidth:
    529     case CSSPropertyWebkitBorderFit:
    530     case CSSPropertyWebkitBorderImage:
    531     case CSSPropertyWebkitBorderRadius:
    532     case CSSPropertyWebkitBorderStart:
    533     case CSSPropertyWebkitBorderStartColor:
    534     case CSSPropertyWebkitBorderStartStyle:
    535     case CSSPropertyWebkitBorderStartWidth:
    536     case CSSPropertyWebkitBoxAlign:
    537     case CSSPropertyWebkitBoxDecorationBreak:
    538     case CSSPropertyWebkitBoxFlex:
    539     case CSSPropertyWebkitBoxFlexGroup:
    540     case CSSPropertyWebkitBoxLines:
    541     case CSSPropertyWebkitBoxOrdinalGroup:
    542     case CSSPropertyWebkitBoxOrient:
    543     case CSSPropertyWebkitBoxPack:
    544     case CSSPropertyWebkitBoxReflect:
    545     case CSSPropertyWebkitBoxShadow:
    546     case CSSPropertyWebkitClipPath:
    547     case CSSPropertyWebkitColumnAxis:
    548     case CSSPropertyWebkitColumnBreakAfter:
    549     case CSSPropertyWebkitColumnBreakBefore:
    550     case CSSPropertyWebkitColumnBreakInside:
    551     case CSSPropertyWebkitColumnCount:
    552     case CSSPropertyWebkitColumnGap:
    553     case CSSPropertyWebkitColumnProgression:
    554     case CSSPropertyWebkitColumnRule:
    555     case CSSPropertyWebkitColumnRuleColor:
    556     case CSSPropertyWebkitColumnRuleStyle:
    557     case CSSPropertyWebkitColumnRuleWidth:
    558     case CSSPropertyWebkitColumnSpan:
    559     case CSSPropertyWebkitColumnWidth:
    560     case CSSPropertyWebkitColumns:
    561     case CSSPropertyWebkitFilter:
    562     case CSSPropertyFlex:
    563     case CSSPropertyFlexBasis:
    564     case CSSPropertyFlexDirection:
    565     case CSSPropertyFlexFlow:
    566     case CSSPropertyFlexGrow:
    567     case CSSPropertyFlexShrink:
    568     case CSSPropertyFlexWrap:
    569     case CSSPropertyWebkitFontSizeDelta:
    570     case CSSPropertyGridArea:
    571     case CSSPropertyGridAutoColumns:
    572     case CSSPropertyGridAutoFlow:
    573     case CSSPropertyGridAutoRows:
    574     case CSSPropertyGridColumn:
    575     case CSSPropertyGridColumnEnd:
    576     case CSSPropertyGridColumnStart:
    577     case CSSPropertyGridDefinitionColumns:
    578     case CSSPropertyGridDefinitionRows:
    579     case CSSPropertyGridRow:
    580     case CSSPropertyGridRowEnd:
    581     case CSSPropertyGridRowStart:
    582     case CSSPropertyGridTemplate:
    583     case CSSPropertyJustifyContent:
    584     case CSSPropertyWebkitLineClamp:
    585     case CSSPropertyWebkitLogicalHeight:
    586     case CSSPropertyWebkitLogicalWidth:
    587     case CSSPropertyWebkitMarginAfter:
    588     case CSSPropertyWebkitMarginAfterCollapse:
    589     case CSSPropertyWebkitMarginBefore:
    590     case CSSPropertyWebkitMarginBeforeCollapse:
    591     case CSSPropertyWebkitMarginBottomCollapse:
    592     case CSSPropertyWebkitMarginCollapse:
    593     case CSSPropertyWebkitMarginEnd:
    594     case CSSPropertyWebkitMarginStart:
    595     case CSSPropertyWebkitMarginTopCollapse:
    596     case CSSPropertyWebkitMarquee:
    597     case CSSPropertyWebkitMarqueeDirection:
    598     case CSSPropertyWebkitMarqueeIncrement:
    599     case CSSPropertyWebkitMarqueeRepetition:
    600     case CSSPropertyWebkitMarqueeSpeed:
    601     case CSSPropertyOrder:
    602     case CSSPropertyWebkitMarqueeStyle:
    603     case CSSPropertyWebkitMask:
    604     case CSSPropertyWebkitMaskBoxImage:
    605     case CSSPropertyWebkitMaskBoxImageOutset:
    606     case CSSPropertyWebkitMaskBoxImageRepeat:
    607     case CSSPropertyWebkitMaskBoxImageSlice:
    608     case CSSPropertyWebkitMaskBoxImageSource:
    609     case CSSPropertyWebkitMaskBoxImageWidth:
    610     case CSSPropertyWebkitMaskClip:
    611     case CSSPropertyWebkitMaskComposite:
    612     case CSSPropertyWebkitMaskImage:
    613     case CSSPropertyWebkitMaskOrigin:
    614     case CSSPropertyWebkitMaskPosition:
    615     case CSSPropertyWebkitMaskPositionX:
    616     case CSSPropertyWebkitMaskPositionY:
    617     case CSSPropertyWebkitMaskRepeat:
    618     case CSSPropertyWebkitMaskRepeatX:
    619     case CSSPropertyWebkitMaskRepeatY:
    620     case CSSPropertyWebkitMaskSize:
    621     case CSSPropertyWebkitMaxLogicalWidth:
    622     case CSSPropertyWebkitMaxLogicalHeight:
    623     case CSSPropertyWebkitMinLogicalWidth:
    624     case CSSPropertyWebkitMinLogicalHeight:
    625     case CSSPropertyWebkitPaddingAfter:
    626     case CSSPropertyWebkitPaddingBefore:
    627     case CSSPropertyWebkitPaddingEnd:
    628     case CSSPropertyWebkitPaddingStart:
    629     case CSSPropertyWebkitPerspective:
    630     case CSSPropertyWebkitPerspectiveOrigin:
    631     case CSSPropertyWebkitPerspectiveOriginX:
    632     case CSSPropertyWebkitPerspectiveOriginY:
    633     case CSSPropertyWebkitTransform:
    634     case CSSPropertyWebkitTransformOrigin:
    635     case CSSPropertyWebkitTransformOriginX:
    636     case CSSPropertyWebkitTransformOriginY:
    637     case CSSPropertyWebkitTransformOriginZ:
    638     case CSSPropertyWebkitTransformStyle:
    639     case CSSPropertyWebkitTransition:
    640     case CSSPropertyWebkitTransitionDelay:
    641     case CSSPropertyWebkitTransitionDuration:
    642     case CSSPropertyWebkitTransitionProperty:
    643     case CSSPropertyWebkitTransitionTimingFunction:
    644     case CSSPropertyWebkitUserDrag:
    645     case CSSPropertyWebkitFlowInto:
    646     case CSSPropertyWebkitFlowFrom:
    647     case CSSPropertyWebkitRegionBreakAfter:
    648     case CSSPropertyWebkitRegionBreakBefore:
    649     case CSSPropertyWebkitRegionBreakInside:
    650     case CSSPropertyWebkitRegionFragment:
    651     case CSSPropertyWebkitWrapFlow:
    652     case CSSPropertyWebkitShapeMargin:
    653     case CSSPropertyWebkitShapePadding:
    654     case CSSPropertyWebkitShapeInside:
    655     case CSSPropertyWebkitShapeOutside:
    656     case CSSPropertyWebkitWrapThrough:
    657     case CSSPropertyWebkitAppRegion:
    658     case CSSPropertyWidth:
    659     case CSSPropertyMaxZoom:
    660     case CSSPropertyMinZoom:
    661     case CSSPropertyOrientation:
    662     case CSSPropertyUserZoom:
    663     case CSSPropertyZIndex:
    664     case CSSPropertyZoom:
    665         return false;
    666     case CSSPropertyInvalid:
    667         ASSERT_NOT_REACHED();
    668         return false;
    669     }
    670     ASSERT_NOT_REACHED();
    671     return false;
    672 }
    673 
    674 } // namespace WebCore
    675