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