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