Unreviewed, rolling out r104972.
[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 CSSPropertyWebkitFontKerning:
322     case CSSPropertyWebkitFontSmoothing:
323     case CSSPropertyWebkitFontVariantLigatures:
324     case CSSPropertyWebkitLocale:
325     case CSSPropertyWebkitHighlight:
326     case CSSPropertyWebkitHyphenateCharacter:
327     case CSSPropertyWebkitHyphenateLimitAfter:
328     case CSSPropertyWebkitHyphenateLimitBefore:
329     case CSSPropertyWebkitHyphenateLimitLines:
330     case CSSPropertyWebkitHyphens:
331     case CSSPropertyWebkitLineBoxContain:
332     case CSSPropertyWebkitLineBreak:
333     case CSSPropertyWebkitLineGrid:
334     case CSSPropertyWebkitLineGridSnap:
335     case CSSPropertyWebkitNbspMode:
336     case CSSPropertyWebkitPrintColorAdjust:
337     case CSSPropertyWebkitRtlOrdering:
338     case CSSPropertyWebkitTextCombine:
339     case CSSPropertyWebkitTextDecorationsInEffect:
340     case CSSPropertyWebkitTextEmphasis:
341     case CSSPropertyWebkitTextEmphasisColor:
342     case CSSPropertyWebkitTextEmphasisPosition:
343     case CSSPropertyWebkitTextEmphasisStyle:
344     case CSSPropertyWebkitTextFillColor:
345     case CSSPropertyWebkitTextOrientation:
346     case CSSPropertyWebkitTextSecurity:
347     case CSSPropertyWebkitTextSizeAdjust:
348     case CSSPropertyWebkitTextStroke:
349     case CSSPropertyWebkitTextStrokeColor:
350     case CSSPropertyWebkitTextStrokeWidth:
351     case CSSPropertyWebkitUserModify:
352     case CSSPropertyWebkitUserSelect:
353     case CSSPropertyWebkitWritingMode:
354     case CSSPropertyWhiteSpace:
355     case CSSPropertyWidows:
356     case CSSPropertyWordBreak:
357     case CSSPropertyWordSpacing:
358     case CSSPropertyWordWrap:
359 #if ENABLE(SVG)
360     case CSSPropertyClipRule:
361     case CSSPropertyColorInterpolation:
362     case CSSPropertyColorInterpolationFilters:
363     case CSSPropertyColorRendering:
364     case CSSPropertyFill:
365     case CSSPropertyFillOpacity:
366     case CSSPropertyFillRule:
367     case CSSPropertyGlyphOrientationHorizontal:
368     case CSSPropertyGlyphOrientationVertical:
369     case CSSPropertyKerning:
370     case CSSPropertyMarker:
371     case CSSPropertyMarkerEnd:
372     case CSSPropertyMarkerMid:
373     case CSSPropertyMarkerStart:
374     case CSSPropertyStroke:
375     case CSSPropertyStrokeDasharray:
376     case CSSPropertyStrokeDashoffset:
377     case CSSPropertyStrokeLinecap:
378     case CSSPropertyStrokeLinejoin:
379     case CSSPropertyStrokeMiterlimit:
380     case CSSPropertyStrokeOpacity:
381     case CSSPropertyStrokeWidth:
382     case CSSPropertyShapeRendering:
383     case CSSPropertyTextAnchor:
384     case CSSPropertyWritingMode:
385 #endif
386 #if ENABLE(TOUCH_EVENTS)
387     case CSSPropertyWebkitTapHighlightColor:
388 #endif
389         return true;
390     case CSSPropertyDisplay:
391     case CSSPropertyZoom:
392     case CSSPropertyBackground:
393     case CSSPropertyBackgroundAttachment:
394     case CSSPropertyBackgroundClip:
395     case CSSPropertyBackgroundColor:
396     case CSSPropertyBackgroundImage:
397     case CSSPropertyBackgroundOrigin:
398     case CSSPropertyBackgroundPosition:
399     case CSSPropertyBackgroundPositionX:
400     case CSSPropertyBackgroundPositionY:
401     case CSSPropertyBackgroundRepeat:
402     case CSSPropertyBackgroundRepeatX:
403     case CSSPropertyBackgroundRepeatY:
404     case CSSPropertyBackgroundSize:
405     case CSSPropertyBorder:
406     case CSSPropertyBorderBottom:
407     case CSSPropertyBorderBottomColor:
408     case CSSPropertyBorderBottomLeftRadius:
409     case CSSPropertyBorderBottomRightRadius:
410     case CSSPropertyBorderBottomStyle:
411     case CSSPropertyBorderBottomWidth:
412     case CSSPropertyBorderColor:
413     case CSSPropertyBorderImage:
414     case CSSPropertyBorderImageOutset:
415     case CSSPropertyBorderImageRepeat:
416     case CSSPropertyBorderImageSlice:
417     case CSSPropertyBorderImageSource:
418     case CSSPropertyBorderImageWidth:
419     case CSSPropertyBorderLeft:
420     case CSSPropertyBorderLeftColor:
421     case CSSPropertyBorderLeftStyle:
422     case CSSPropertyBorderLeftWidth:
423     case CSSPropertyBorderRadius:
424     case CSSPropertyBorderRight:
425     case CSSPropertyBorderRightColor:
426     case CSSPropertyBorderRightStyle:
427     case CSSPropertyBorderRightWidth:
428     case CSSPropertyBorderStyle:
429     case CSSPropertyBorderTop:
430     case CSSPropertyBorderTopColor:
431     case CSSPropertyBorderTopLeftRadius:
432     case CSSPropertyBorderTopRightRadius:
433     case CSSPropertyBorderTopStyle:
434     case CSSPropertyBorderTopWidth:
435     case CSSPropertyBorderWidth:
436     case CSSPropertyBottom:
437     case CSSPropertyBoxShadow:
438     case CSSPropertyBoxSizing:
439     case CSSPropertyClear:
440     case CSSPropertyClip:
441     case CSSPropertyContent:
442     case CSSPropertyCounterIncrement:
443     case CSSPropertyCounterReset:
444     case CSSPropertyFloat:
445     case CSSPropertyFontStretch:
446     case CSSPropertyHeight:
447     case CSSPropertyLeft:
448     case CSSPropertyMargin:
449     case CSSPropertyMarginBottom:
450     case CSSPropertyMarginLeft:
451     case CSSPropertyMarginRight:
452     case CSSPropertyMarginTop:
453     case CSSPropertyMaxHeight:
454     case CSSPropertyMaxWidth:
455     case CSSPropertyMinHeight:
456     case CSSPropertyMinWidth:
457     case CSSPropertyOpacity:
458     case CSSPropertyOutline:
459     case CSSPropertyOutlineColor:
460     case CSSPropertyOutlineOffset:
461     case CSSPropertyOutlineStyle:
462     case CSSPropertyOutlineWidth:
463     case CSSPropertyOverflow:
464     case CSSPropertyOverflowX:
465     case CSSPropertyOverflowY:
466     case CSSPropertyPadding:
467     case CSSPropertyPaddingBottom:
468     case CSSPropertyPaddingLeft:
469     case CSSPropertyPaddingRight:
470     case CSSPropertyPaddingTop:
471     case CSSPropertyPage:
472     case CSSPropertyPageBreakAfter:
473     case CSSPropertyPageBreakBefore:
474     case CSSPropertyPageBreakInside:
475     case CSSPropertyPosition:
476     case CSSPropertyRight:
477     case CSSPropertySize:
478     case CSSPropertySrc:
479     case CSSPropertyTableLayout:
480     case CSSPropertyTextLineThrough:
481     case CSSPropertyTextLineThroughColor:
482     case CSSPropertyTextLineThroughMode:
483     case CSSPropertyTextLineThroughStyle:
484     case CSSPropertyTextLineThroughWidth:
485     case CSSPropertyTextOverflow:
486     case CSSPropertyTextOverline:
487     case CSSPropertyTextOverlineColor:
488     case CSSPropertyTextOverlineMode:
489     case CSSPropertyTextOverlineStyle:
490     case CSSPropertyTextOverlineWidth:
491     case CSSPropertyTextUnderline:
492     case CSSPropertyTextUnderlineColor:
493     case CSSPropertyTextUnderlineMode:
494     case CSSPropertyTextUnderlineStyle:
495     case CSSPropertyTextUnderlineWidth:
496     case CSSPropertyTop:
497     case CSSPropertyUnicodeBidi:
498     case CSSPropertyUnicodeRange:
499     case CSSPropertyVerticalAlign:
500     case CSSPropertyWidth:
501     case CSSPropertyZIndex:
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 CSSPropertyWebkitBoxFlex:
538     case CSSPropertyWebkitBoxFlexGroup:
539     case CSSPropertyWebkitBoxLines:
540     case CSSPropertyWebkitBoxOrdinalGroup:
541     case CSSPropertyWebkitBoxOrient:
542     case CSSPropertyWebkitBoxPack:
543     case CSSPropertyWebkitBoxReflect:
544     case CSSPropertyWebkitBoxShadow:
545     case CSSPropertyWebkitColumnAxis:
546     case CSSPropertyWebkitColumnBreakAfter:
547     case CSSPropertyWebkitColumnBreakBefore:
548     case CSSPropertyWebkitColumnBreakInside:
549     case CSSPropertyWebkitColumnCount:
550     case CSSPropertyWebkitColumnGap:
551     case CSSPropertyWebkitColumnRule:
552     case CSSPropertyWebkitColumnRuleColor:
553     case CSSPropertyWebkitColumnRuleStyle:
554     case CSSPropertyWebkitColumnRuleWidth:
555     case CSSPropertyWebkitColumnSpan:
556     case CSSPropertyWebkitColumnWidth:
557     case CSSPropertyWebkitColumns:
558 #if ENABLE(CSS_FILTERS)
559     case CSSPropertyWebkitFilter:
560 #endif
561     case CSSPropertyWebkitFlexOrder:
562     case CSSPropertyWebkitFlexPack:
563     case CSSPropertyWebkitFlexItemAlign:
564     case CSSPropertyWebkitFlexDirection:
565     case CSSPropertyWebkitFlexFlow:
566     case CSSPropertyWebkitFlexWrap:
567     case CSSPropertyWebkitFontSizeDelta:
568 #if ENABLE(CSS_GRID_LAYOUT)
569     case CSSPropertyWebkitGridColumns:
570     case CSSPropertyWebkitGridRows:
571 #endif
572     case CSSPropertyWebkitLineClamp:
573     case CSSPropertyWebkitLogicalWidth:
574     case CSSPropertyWebkitLogicalHeight:
575     case CSSPropertyWebkitMarginAfterCollapse:
576     case CSSPropertyWebkitMarginBeforeCollapse:
577     case CSSPropertyWebkitMarginBottomCollapse:
578     case CSSPropertyWebkitMarginTopCollapse:
579     case CSSPropertyWebkitMarginCollapse:
580     case CSSPropertyWebkitMarginAfter:
581     case CSSPropertyWebkitMarginBefore:
582     case CSSPropertyWebkitMarginEnd:
583     case CSSPropertyWebkitMarginStart:
584     case CSSPropertyWebkitMarquee:
585     case CSSPropertyWebkitMarqueeDirection:
586     case CSSPropertyWebkitMarqueeIncrement:
587     case CSSPropertyWebkitMarqueeRepetition:
588     case CSSPropertyWebkitMarqueeSpeed:
589     case CSSPropertyWebkitMarqueeStyle:
590     case CSSPropertyWebkitMask:
591     case CSSPropertyWebkitMaskAttachment:
592     case CSSPropertyWebkitMaskBoxImage:
593     case CSSPropertyWebkitMaskBoxImageOutset:
594     case CSSPropertyWebkitMaskBoxImageRepeat:
595     case CSSPropertyWebkitMaskBoxImageSlice:
596     case CSSPropertyWebkitMaskBoxImageSource:
597     case CSSPropertyWebkitMaskBoxImageWidth:
598     case CSSPropertyWebkitMaskClip:
599     case CSSPropertyWebkitMaskComposite:
600     case CSSPropertyWebkitMaskImage:
601     case CSSPropertyWebkitMaskOrigin:
602     case CSSPropertyWebkitMaskPosition:
603     case CSSPropertyWebkitMaskPositionX:
604     case CSSPropertyWebkitMaskPositionY:
605     case CSSPropertyWebkitMaskRepeat:
606     case CSSPropertyWebkitMaskRepeatX:
607     case CSSPropertyWebkitMaskRepeatY:
608     case CSSPropertyWebkitMaskSize:
609     case CSSPropertyWebkitMatchNearestMailBlockquoteColor:
610     case CSSPropertyWebkitMaxLogicalWidth:
611     case CSSPropertyWebkitMaxLogicalHeight:
612     case CSSPropertyWebkitMinLogicalWidth:
613     case CSSPropertyWebkitMinLogicalHeight:
614     case CSSPropertyWebkitPaddingAfter:
615     case CSSPropertyWebkitPaddingBefore:
616     case CSSPropertyWebkitPaddingEnd:
617     case CSSPropertyWebkitPaddingStart:
618     case CSSPropertyWebkitPerspective:
619     case CSSPropertyWebkitPerspectiveOrigin:
620     case CSSPropertyWebkitPerspectiveOriginX:
621     case CSSPropertyWebkitPerspectiveOriginY:
622     case CSSPropertyWebkitTransform:
623     case CSSPropertyWebkitTransformOrigin:
624     case CSSPropertyWebkitTransformOriginX:
625     case CSSPropertyWebkitTransformOriginY:
626     case CSSPropertyWebkitTransformOriginZ:
627     case CSSPropertyWebkitTransformStyle:
628     case CSSPropertyWebkitTransition:
629     case CSSPropertyWebkitTransitionDelay:
630     case CSSPropertyWebkitTransitionDuration:
631     case CSSPropertyWebkitTransitionProperty:
632     case CSSPropertyWebkitTransitionTimingFunction:
633     case CSSPropertyWebkitUserDrag:
634     case CSSPropertyWebkitFlowInto:
635     case CSSPropertyWebkitFlowFrom:
636     case CSSPropertyWebkitRegionOverflow:
637     case CSSPropertyWebkitRegionBreakAfter:
638     case CSSPropertyWebkitRegionBreakBefore:
639     case CSSPropertyWebkitRegionBreakInside:
640     case CSSPropertyWebkitWrap:
641     case CSSPropertyWebkitWrapFlow:
642     case CSSPropertyWebkitWrapMargin:
643     case CSSPropertyWebkitWrapPadding:
644     case CSSPropertyWebkitWrapShapeInside:
645     case CSSPropertyWebkitWrapShapeOutside:
646     case CSSPropertyWebkitWrapThrough:
647 #if ENABLE(SVG)
648     case CSSPropertyClipPath:
649     case CSSPropertyMask:
650     case CSSPropertyEnableBackground:
651     case CSSPropertyFilter:
652     case CSSPropertyFloodColor:
653     case CSSPropertyFloodOpacity:
654     case CSSPropertyLightingColor:
655     case CSSPropertyStopColor:
656     case CSSPropertyStopOpacity:
657     case CSSPropertyColorProfile:
658     case CSSPropertyAlignmentBaseline:
659     case CSSPropertyBaselineShift:
660     case CSSPropertyDominantBaseline:
661     case CSSPropertyVectorEffect:
662     case CSSPropertyWebkitSvgShadow:
663 #endif
664 #if ENABLE(DASHBOARD_SUPPORT)
665     case CSSPropertyWebkitDashboardRegion:
666 #endif
667         return false;
668     case CSSPropertyInvalid:
669         ASSERT_NOT_REACHED();
670         return false;
671     }
672     ASSERT_NOT_REACHED();
673     return false;
674 }
675
676 } // namespace WebCore