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