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