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