-webkit-text-underline-position should not be inherited
[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 "RenderStyleConstants.h"
26 #include "StylePropertyShorthand.h"
27
28 #if ENABLE(CSS_VARIABLES)
29 #include "CSSVariableValue.h"
30 #endif
31
32 #include <wtf/text/StringBuilder.h>
33
34 namespace WebCore {
35
36 struct SameSizeAsCSSProperty {
37     uint32_t bitfields;
38     void* value;
39 };
40
41 COMPILE_ASSERT(sizeof(CSSProperty) == sizeof(SameSizeAsCSSProperty), CSSProperty_should_stay_small);
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 #if ENABLE(CSS_IMAGE_ORIENTATION)
271     case CSSPropertyImageOrientation:
272 #endif
273     case CSSPropertyImageRendering:
274 #if ENABLE(CSS_IMAGE_RESOLUTION)
275     case CSSPropertyImageResolution:
276 #endif
277     case CSSPropertyLetterSpacing:
278     case CSSPropertyLineHeight:
279     case CSSPropertyListStyle:
280     case CSSPropertyListStyleImage:
281     case CSSPropertyListStyleType:
282     case CSSPropertyListStylePosition:
283     case CSSPropertyOrphans:
284     case CSSPropertyPointerEvents:
285     case CSSPropertyQuotes:
286     case CSSPropertyResize:
287     case CSSPropertySpeak:
288     case CSSPropertyTabSize:
289     case CSSPropertyTextAlign:
290     case CSSPropertyTextDecoration:
291     case CSSPropertyTextIndent:
292     case CSSPropertyTextRendering:
293     case CSSPropertyTextShadow:
294     case CSSPropertyTextTransform:
295 #if ENABLE(CSS_VARIABLES)
296     case CSSPropertyVariable:
297 #endif
298     case CSSPropertyVisibility:
299     case CSSPropertyWebkitAspectRatio:
300     case CSSPropertyWebkitBorderHorizontalSpacing:
301     case CSSPropertyWebkitBorderVerticalSpacing:
302     case CSSPropertyWebkitBoxDirection:
303     case CSSPropertyWebkitColorCorrection:
304 #if ENABLE(CURSOR_VISIBILITY)
305     case CSSPropertyWebkitCursorVisibility:
306 #endif
307     case CSSPropertyWebkitFontFeatureSettings:
308     case CSSPropertyWebkitFontKerning:
309     case CSSPropertyWebkitFontSmoothing:
310     case CSSPropertyWebkitFontVariantLigatures:
311     case CSSPropertyWebkitLocale:
312     case CSSPropertyWebkitHighlight:
313     case CSSPropertyWebkitHyphenateCharacter:
314     case CSSPropertyWebkitHyphenateLimitAfter:
315     case CSSPropertyWebkitHyphenateLimitBefore:
316     case CSSPropertyWebkitHyphenateLimitLines:
317     case CSSPropertyWebkitHyphens:
318     case CSSPropertyWebkitLineAlign:
319     case CSSPropertyWebkitLineBoxContain:
320     case CSSPropertyWebkitLineBreak:
321     case CSSPropertyWebkitLineGrid:
322     case CSSPropertyWebkitLineSnap:
323     case CSSPropertyWebkitNbspMode:
324 #if ENABLE(ACCELERATED_OVERFLOW_SCROLLING)
325     case CSSPropertyWebkitOverflowScrolling:
326 #endif
327     case CSSPropertyWebkitPrintColorAdjust:
328     case CSSPropertyWebkitRtlOrdering:
329     case CSSPropertyWebkitRubyPosition:
330     case CSSPropertyWebkitTextCombine:
331 #if ENABLE(CSS3_TEXT)
332     case CSSPropertyWebkitTextDecorationLine:
333     case CSSPropertyWebkitTextAlignLast:
334     case CSSPropertyWebkitTextJustify:
335 #endif // CSS3_TEXT
336     case CSSPropertyWebkitTextDecorationsInEffect:
337     case CSSPropertyWebkitTextEmphasis:
338     case CSSPropertyWebkitTextEmphasisColor:
339     case CSSPropertyWebkitTextEmphasisPosition:
340     case CSSPropertyWebkitTextEmphasisStyle:
341     case CSSPropertyWebkitTextFillColor:
342     case CSSPropertyWebkitTextOrientation:
343     case CSSPropertyWebkitTextSecurity:
344     case CSSPropertyWebkitTextStroke:
345     case CSSPropertyWebkitTextStrokeColor:
346     case CSSPropertyWebkitTextStrokeWidth:
347     case CSSPropertyWebkitUserModify:
348     case CSSPropertyWebkitUserSelect:
349     case CSSPropertyWebkitWritingMode:
350     case CSSPropertyWhiteSpace:
351     case CSSPropertyWidows:
352     case CSSPropertyWordBreak:
353     case CSSPropertyWordSpacing:
354     case CSSPropertyWordWrap:
355 #if ENABLE(SVG)
356     case CSSPropertyClipRule:
357     case CSSPropertyColorInterpolation:
358     case CSSPropertyColorInterpolationFilters:
359     case CSSPropertyColorRendering:
360     case CSSPropertyFill:
361     case CSSPropertyFillOpacity:
362     case CSSPropertyFillRule:
363     case CSSPropertyGlyphOrientationHorizontal:
364     case CSSPropertyGlyphOrientationVertical:
365     case CSSPropertyKerning:
366     case CSSPropertyMarker:
367     case CSSPropertyMarkerEnd:
368     case CSSPropertyMarkerMid:
369     case CSSPropertyMarkerStart:
370     case CSSPropertyStroke:
371     case CSSPropertyStrokeDasharray:
372     case CSSPropertyStrokeDashoffset:
373     case CSSPropertyStrokeLinecap:
374     case CSSPropertyStrokeLinejoin:
375     case CSSPropertyStrokeMiterlimit:
376     case CSSPropertyStrokeOpacity:
377     case CSSPropertyStrokeWidth:
378     case CSSPropertyShapeRendering:
379     case CSSPropertyTextAnchor:
380     case CSSPropertyWritingMode:
381 #endif
382 #if ENABLE(TOUCH_EVENTS)
383     case CSSPropertyWebkitTapHighlightColor:
384 #endif
385         return true;
386     case CSSPropertyDisplay:
387     case CSSPropertyZoom:
388     case CSSPropertyBackground:
389     case CSSPropertyBackgroundAttachment:
390     case CSSPropertyBackgroundClip:
391     case CSSPropertyBackgroundColor:
392     case CSSPropertyBackgroundImage:
393     case CSSPropertyBackgroundOrigin:
394     case CSSPropertyBackgroundPosition:
395     case CSSPropertyBackgroundPositionX:
396     case CSSPropertyBackgroundPositionY:
397     case CSSPropertyBackgroundRepeat:
398     case CSSPropertyBackgroundRepeatX:
399     case CSSPropertyBackgroundRepeatY:
400     case CSSPropertyBackgroundSize:
401     case CSSPropertyBorder:
402     case CSSPropertyBorderBottom:
403     case CSSPropertyBorderBottomColor:
404     case CSSPropertyBorderBottomLeftRadius:
405     case CSSPropertyBorderBottomRightRadius:
406     case CSSPropertyBorderBottomStyle:
407     case CSSPropertyBorderBottomWidth:
408     case CSSPropertyBorderColor:
409     case CSSPropertyBorderImage:
410     case CSSPropertyBorderImageOutset:
411     case CSSPropertyBorderImageRepeat:
412     case CSSPropertyBorderImageSlice:
413     case CSSPropertyBorderImageSource:
414     case CSSPropertyBorderImageWidth:
415     case CSSPropertyBorderLeft:
416     case CSSPropertyBorderLeftColor:
417     case CSSPropertyBorderLeftStyle:
418     case CSSPropertyBorderLeftWidth:
419     case CSSPropertyBorderRadius:
420     case CSSPropertyBorderRight:
421     case CSSPropertyBorderRightColor:
422     case CSSPropertyBorderRightStyle:
423     case CSSPropertyBorderRightWidth:
424     case CSSPropertyBorderStyle:
425     case CSSPropertyBorderTop:
426     case CSSPropertyBorderTopColor:
427     case CSSPropertyBorderTopLeftRadius:
428     case CSSPropertyBorderTopRightRadius:
429     case CSSPropertyBorderTopStyle:
430     case CSSPropertyBorderTopWidth:
431     case CSSPropertyBorderWidth:
432     case CSSPropertyBottom:
433     case CSSPropertyBoxShadow:
434     case CSSPropertyBoxSizing:
435     case CSSPropertyClear:
436     case CSSPropertyClip:
437     case CSSPropertyContent:
438     case CSSPropertyCounterIncrement:
439     case CSSPropertyCounterReset:
440     case CSSPropertyFloat:
441     case CSSPropertyFontStretch:
442 #if ENABLE(CSS_SHADERS)
443     case CSSPropertyGeometry:
444 #endif
445     case CSSPropertyHeight:
446     case CSSPropertyLeft:
447     case CSSPropertyMargin:
448     case CSSPropertyMarginBottom:
449     case CSSPropertyMarginLeft:
450     case CSSPropertyMarginRight:
451     case CSSPropertyMarginTop:
452     case CSSPropertyMaxHeight:
453     case CSSPropertyMaxWidth:
454     case CSSPropertyMinHeight:
455     case CSSPropertyMinWidth:
456     case CSSPropertyOpacity:
457     case CSSPropertyOutline:
458     case CSSPropertyOutlineColor:
459     case CSSPropertyOutlineOffset:
460     case CSSPropertyOutlineStyle:
461     case CSSPropertyOutlineWidth:
462     case CSSPropertyOverflow:
463     case CSSPropertyOverflowWrap:
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 CSSPropertyTransition:
498     case CSSPropertyTransitionDelay:
499     case CSSPropertyTransitionDuration:
500     case CSSPropertyTransitionProperty:
501     case CSSPropertyTransitionTimingFunction:
502     case CSSPropertyUnicodeBidi:
503     case CSSPropertyUnicodeRange:
504     case CSSPropertyVerticalAlign:
505     case CSSPropertyWidth:
506     case CSSPropertyZIndex:
507     case CSSPropertyWebkitAnimation:
508     case CSSPropertyWebkitAnimationDelay:
509     case CSSPropertyWebkitAnimationDirection:
510     case CSSPropertyWebkitAnimationDuration:
511     case CSSPropertyWebkitAnimationFillMode:
512     case CSSPropertyWebkitAnimationIterationCount:
513     case CSSPropertyWebkitAnimationName:
514     case CSSPropertyWebkitAnimationPlayState:
515     case CSSPropertyWebkitAnimationTimingFunction:
516     case CSSPropertyWebkitAppearance:
517     case CSSPropertyWebkitBackfaceVisibility:
518     case CSSPropertyWebkitBackgroundClip:
519     case CSSPropertyWebkitBackgroundComposite:
520     case CSSPropertyWebkitBackgroundOrigin:
521     case CSSPropertyWebkitBackgroundSize:
522     case CSSPropertyWebkitBorderAfter:
523     case CSSPropertyWebkitBorderAfterColor:
524     case CSSPropertyWebkitBorderAfterStyle:
525     case CSSPropertyWebkitBorderAfterWidth:
526     case CSSPropertyWebkitBorderBefore:
527     case CSSPropertyWebkitBorderBeforeColor:
528     case CSSPropertyWebkitBorderBeforeStyle:
529     case CSSPropertyWebkitBorderBeforeWidth:
530     case CSSPropertyWebkitBorderEnd:
531     case CSSPropertyWebkitBorderEndColor:
532     case CSSPropertyWebkitBorderEndStyle:
533     case CSSPropertyWebkitBorderEndWidth:
534     case CSSPropertyWebkitBorderFit:
535     case CSSPropertyWebkitBorderImage:
536     case CSSPropertyWebkitBorderRadius:
537     case CSSPropertyWebkitBorderStart:
538     case CSSPropertyWebkitBorderStartColor:
539     case CSSPropertyWebkitBorderStartStyle:
540     case CSSPropertyWebkitBorderStartWidth:
541     case CSSPropertyWebkitBoxAlign:
542 #if ENABLE(CSS_BOX_DECORATION_BREAK)
543     case CSSPropertyWebkitBoxDecorationBreak:
544 #endif
545     case CSSPropertyWebkitBoxFlex:
546     case CSSPropertyWebkitBoxFlexGroup:
547     case CSSPropertyWebkitBoxLines:
548     case CSSPropertyWebkitBoxOrdinalGroup:
549     case CSSPropertyWebkitBoxOrient:
550     case CSSPropertyWebkitBoxPack:
551     case CSSPropertyWebkitBoxReflect:
552     case CSSPropertyWebkitBoxShadow:
553     case CSSPropertyWebkitClipPath:
554     case CSSPropertyWebkitColumnAxis:
555     case CSSPropertyWebkitColumnBreakAfter:
556     case CSSPropertyWebkitColumnBreakBefore:
557     case CSSPropertyWebkitColumnBreakInside:
558     case CSSPropertyWebkitColumnCount:
559     case CSSPropertyWebkitColumnGap:
560     case CSSPropertyWebkitColumnProgression:
561     case CSSPropertyWebkitColumnRule:
562     case CSSPropertyWebkitColumnRuleColor:
563     case CSSPropertyWebkitColumnRuleStyle:
564     case CSSPropertyWebkitColumnRuleWidth:
565     case CSSPropertyWebkitColumnSpan:
566     case CSSPropertyWebkitColumnWidth:
567     case CSSPropertyWebkitColumns:
568 #if ENABLE(CSS_FILTERS)
569     case CSSPropertyWebkitFilter:
570 #endif
571 #if ENABLE(CSS_COMPOSITING)
572     case CSSPropertyWebkitBlendMode:
573     case CSSPropertyWebkitBackgroundBlendMode:
574 #endif
575     case CSSPropertyWebkitAlignContent:
576     case CSSPropertyWebkitAlignItems:
577     case CSSPropertyWebkitAlignSelf:
578     case CSSPropertyWebkitFlex:
579     case CSSPropertyWebkitFlexBasis:
580     case CSSPropertyWebkitFlexDirection:
581     case CSSPropertyWebkitFlexFlow:
582     case CSSPropertyWebkitFlexGrow:
583     case CSSPropertyWebkitFlexShrink:
584     case CSSPropertyWebkitFlexWrap:
585     case CSSPropertyWebkitJustifyContent:
586     case CSSPropertyWebkitOrder:
587     case CSSPropertyWebkitFontSizeDelta:
588     case CSSPropertyWebkitGridAutoColumns:
589     case CSSPropertyWebkitGridAutoFlow:
590     case CSSPropertyWebkitGridAutoRows:
591     case CSSPropertyWebkitGridColumns:
592     case CSSPropertyWebkitGridRows:
593     case CSSPropertyWebkitGridStart:
594     case CSSPropertyWebkitGridEnd:
595     case CSSPropertyWebkitGridBefore:
596     case CSSPropertyWebkitGridAfter:
597     case CSSPropertyWebkitGridColumn:
598     case CSSPropertyWebkitGridRow:
599     case CSSPropertyWebkitLineClamp:
600     case CSSPropertyWebkitLogicalWidth:
601     case CSSPropertyWebkitLogicalHeight:
602     case CSSPropertyWebkitMarginAfterCollapse:
603     case CSSPropertyWebkitMarginBeforeCollapse:
604     case CSSPropertyWebkitMarginBottomCollapse:
605     case CSSPropertyWebkitMarginTopCollapse:
606     case CSSPropertyWebkitMarginCollapse:
607     case CSSPropertyWebkitMarginAfter:
608     case CSSPropertyWebkitMarginBefore:
609     case CSSPropertyWebkitMarginEnd:
610     case CSSPropertyWebkitMarginStart:
611     case CSSPropertyWebkitMarquee:
612     case CSSPropertyWebkitMarqueeDirection:
613     case CSSPropertyWebkitMarqueeIncrement:
614     case CSSPropertyWebkitMarqueeRepetition:
615     case CSSPropertyWebkitMarqueeSpeed:
616     case CSSPropertyWebkitMarqueeStyle:
617     case CSSPropertyWebkitMask:
618     case CSSPropertyWebkitMaskBoxImage:
619     case CSSPropertyWebkitMaskBoxImageOutset:
620     case CSSPropertyWebkitMaskBoxImageRepeat:
621     case CSSPropertyWebkitMaskBoxImageSlice:
622     case CSSPropertyWebkitMaskBoxImageSource:
623     case CSSPropertyWebkitMaskBoxImageWidth:
624     case CSSPropertyWebkitMaskClip:
625     case CSSPropertyWebkitMaskComposite:
626     case CSSPropertyWebkitMaskImage:
627     case CSSPropertyWebkitMaskOrigin:
628     case CSSPropertyWebkitMaskPosition:
629     case CSSPropertyWebkitMaskPositionX:
630     case CSSPropertyWebkitMaskPositionY:
631     case CSSPropertyWebkitMaskRepeat:
632     case CSSPropertyWebkitMaskRepeatX:
633     case CSSPropertyWebkitMaskRepeatY:
634     case CSSPropertyWebkitMaskSize:
635     case CSSPropertyWebkitMaxLogicalWidth:
636     case CSSPropertyWebkitMaxLogicalHeight:
637     case CSSPropertyWebkitMinLogicalWidth:
638     case CSSPropertyWebkitMinLogicalHeight:
639     case CSSPropertyWebkitPaddingAfter:
640     case CSSPropertyWebkitPaddingBefore:
641     case CSSPropertyWebkitPaddingEnd:
642     case CSSPropertyWebkitPaddingStart:
643     case CSSPropertyWebkitPerspective:
644     case CSSPropertyWebkitPerspectiveOrigin:
645     case CSSPropertyWebkitPerspectiveOriginX:
646     case CSSPropertyWebkitPerspectiveOriginY:
647 #if ENABLE(CSS3_TEXT)
648     case CSSPropertyWebkitTextDecorationStyle:
649     case CSSPropertyWebkitTextDecorationColor:
650     case CSSPropertyWebkitTextUnderlinePosition:
651 #endif // CSS3_TEXT
652     case CSSPropertyWebkitTransform:
653     case CSSPropertyWebkitTransformOrigin:
654     case CSSPropertyWebkitTransformOriginX:
655     case CSSPropertyWebkitTransformOriginY:
656     case CSSPropertyWebkitTransformOriginZ:
657     case CSSPropertyWebkitTransformStyle:
658     case CSSPropertyWebkitTransition:
659     case CSSPropertyWebkitTransitionDelay:
660     case CSSPropertyWebkitTransitionDuration:
661     case CSSPropertyWebkitTransitionProperty:
662     case CSSPropertyWebkitTransitionTimingFunction:
663     case CSSPropertyWebkitUserDrag:
664 #if ENABLE(CSS_REGIONS)
665     case CSSPropertyWebkitFlowInto:
666     case CSSPropertyWebkitFlowFrom:
667     case CSSPropertyWebkitRegionOverflow:
668     case CSSPropertyWebkitRegionBreakAfter:
669     case CSSPropertyWebkitRegionBreakBefore:
670     case CSSPropertyWebkitRegionBreakInside:
671 #endif
672 #if ENABLE(CSS_EXCLUSIONS)
673     case CSSPropertyWebkitWrapFlow:
674     case CSSPropertyWebkitShapeMargin:
675     case CSSPropertyWebkitShapePadding:
676     case CSSPropertyWebkitShapeInside:
677     case CSSPropertyWebkitShapeOutside:
678     case CSSPropertyWebkitWrapThrough:
679 #endif
680 #if ENABLE(CSS_SHADERS)
681     case CSSPropertyMix:
682     case CSSPropertyParameters:
683 #endif
684 #if ENABLE(SVG)
685     case CSSPropertyClipPath:
686     case CSSPropertyMask:
687     case CSSPropertyMaskType:
688     case CSSPropertyEnableBackground:
689     case CSSPropertyFilter:
690     case CSSPropertyFloodColor:
691     case CSSPropertyFloodOpacity:
692     case CSSPropertyLightingColor:
693     case CSSPropertyStopColor:
694     case CSSPropertyStopOpacity:
695     case CSSPropertyColorProfile:
696     case CSSPropertyAlignmentBaseline:
697     case CSSPropertyBaselineShift:
698     case CSSPropertyDominantBaseline:
699     case CSSPropertyVectorEffect:
700     case CSSPropertyBufferedRendering:
701     case CSSPropertyWebkitSvgShadow:
702 #endif
703 #if ENABLE(DASHBOARD_SUPPORT)
704     case CSSPropertyWebkitDashboardRegion:
705 #endif
706 #if ENABLE(DRAGGABLE_REGION)
707     case CSSPropertyWebkitAppRegion:
708 #endif
709 #if ENABLE(CSS_DEVICE_ADAPTATION)
710     case CSSPropertyMaxZoom:
711     case CSSPropertyMinZoom:
712     case CSSPropertyOrientation:
713     case CSSPropertyUserZoom:
714 #endif
715         return false;
716     case CSSPropertyInvalid:
717         ASSERT_NOT_REACHED();
718         return false;
719     }
720     ASSERT_NOT_REACHED();
721     return false;
722 }
723
724 } // namespace WebCore