// This file specifies all the CSS properties we support and the necessary
// information for our code generation. The various supported arguments
// are described below with example usage

// We should remove all those marked OBSOLETE now
// We should remove all those marked LAYOUT once we have custom layout

// - alias_for=other-property
// Properties specifying alias_for do not get their own enum and instead map
// directly onto the CSSPropertyID they alias. Currently this means that the


// - runtime_flag=CSSFooProperty
// The flag on RuntimeEnabledFeatures conditionally enables the property


// - longhands=property;other-property
// The property is a shorthand for several other properties.


// Flags which go into CSSPropertyMetadata:
// - inherited
// The property will inherit by default if no value is specified, typically
// mentioned in specifications as "Inherited: yes"


// The remaining arguments are used for the StyleBuilder and allow us to
// succinctly describe how to apply properties. When default handlers are not
// sufficient, we should prefer to use converter, and failing that define
// custom property handlers in StyleBuilderCustom.cpp. We only should use
// StyleBuilderFunctions.cpp.tmpl to define handlers when there are multiple
// properties requiring the same handling, but converter doesn't suffice.

// - font
// The default property handlers call into the FontBuilder instead of setting
// values directly onto the RenderStyle

// - name_for_methods=BlendMode
// Tweaks how we choose defaults for getter, setter, initial and type_name.
// For example, setting this to BlendMode will make us use a setter of setBlendMode
// - initial
// The initial value accessor on the RenderStyle, defaults to e.g. initialBoxShadow
// - getter
// The RenderStyle getter, defaults to e.g. borderBottomLeft
// - setter
// The RenderStyle setter, defaults to e.g. setBorderBottomLeft
// - type_name
// The computed type for the property. Only required for the default value
// application, defaults to e.g. EDisplay

// - converter=convertRadius
// The StyleBuilder will call the specified function on StyleBuilderConverter
// to convert a CSSValue to an appropriate platform value

// - custom_initial
// - custom_inherit
// - custom_value
// - custom_all
// Handlers of the given types will be declared but not defined. Setting
// custom_all is equivalent to setting the other three flags

// - use_handlers_for=CSSPropertyTransform
// Use handlers for the specified property instead of defining new ones

// - builder_skip
// Ignore this property in the StyleBuilder

// - direction_aware
// This property resolves to a different property based on the current direction
// and writing mode.


// Properties with StyleBuilder handling

// High Priority and all other font properties.
// Other properties can depend upon high priority properties (e.g. font-size / ems)
color inherited, custom_all
direction inherited, custom_value

// FIXME: This is a mess due to crbug.com/353932. Shorthands shouldn't have
// any StyleBuilder handling!
font custom_all, longhands=font-family;font-size;font-style;font-variant;font-weight;font-stretch;line-height
font-family inherited, custom_all
font-kerning inherited, font, type_name=FontDescription::Kerning, name_for_methods=Kerning
font-size inherited, custom_all
font-stretch inherited, font, type_name=FontStretch, name_for_methods=Stretch
font-style inherited, font, type_name=FontStyle, name_for_methods=Style
font-variant inherited, font, type_name=FontVariant, name_for_methods=Variant
font-variant-ligatures inherited, font, name_for_methods=VariantLigatures, converter=convertFontVariantLigatures
font-weight inherited, font, type_name=FontWeight, name_for_methods=Weight, converter=convertFontWeight
-webkit-font-feature-settings inherited, font, name_for_methods=FeatureSettings, converter=convertFontFeatureSettings
-webkit-font-smoothing inherited, font, type_name=FontSmoothingMode
-webkit-locale inherited, custom_value
-webkit-text-orientation inherited, custom_value
text-rendering inherited, font, type_name=TextRenderingMode
line-height inherited, getter=specifiedLineHeight, custom_value


// LAYOUT
align-content

// LAYOUT
align-items custom_all

// LAYOUT
align-self custom_all

background-attachment custom_all
background-clip custom_all
background-color custom_all
background-image custom_all
background-origin custom_all
background-position-x custom_all
background-position-y custom_all
background-repeat-x custom_all
background-repeat-y custom_all
background-size custom_all
border-bottom-color custom_all
border-bottom-left-radius initial=initialBorderRadius, converter=convertRadius
border-bottom-right-radius initial=initialBorderRadius, converter=convertRadius
border-bottom-style type_name=EBorderStyle, initial=initialBorderStyle
border-bottom-width initial=initialBorderWidth, converter=convertLineWidth<unsigned>
border-left-color custom_all
border-left-style type_name=EBorderStyle, initial=initialBorderStyle
border-left-width initial=initialBorderWidth, converter=convertLineWidth<unsigned>
border-right-color custom_all
border-right-style type_name=EBorderStyle, initial=initialBorderStyle
border-right-width initial=initialBorderWidth, converter=convertLineWidth<unsigned>
border-top-color custom_all
border-top-left-radius initial=initialBorderRadius, converter=convertRadius
border-top-right-radius initial=initialBorderRadius, converter=convertRadius
border-top-style type_name=EBorderStyle, initial=initialBorderStyle
border-top-width initial=initialBorderWidth, converter=convertLineWidth<unsigned>

// LAYOUT
bottom initial=initialOffset, converter=convertLengthOrAuto

box-shadow converter=convertShadow

// LAYOUT
box-sizing

// LAYOUT
display

// LAYOUT
flex-basis converter=convertLengthOrAuto

// LAYOUT
flex-direction

// LAYOUT
flex-grow type_name=float

// LAYOUT
flex-shrink type_name=float

// LAYOUT
flex-wrap

// LAYOUT
height initial=initialSize, converter=convertLengthSizing

image-rendering inherited

// LAYOUT
justify-content

// LAYOUT
left initial=initialOffset, converter=convertLengthOrAuto

letter-spacing inherited, initial=initialLetterWordSpacing, converter=convertSpacing

// LAYOUT
margin-bottom initial=initialMargin, converter=convertLengthOrAuto

// LAYOUT
margin-left initial=initialMargin, converter=convertLengthOrAuto

// LAYOUT
margin-right initial=initialMargin, converter=convertLengthOrAuto

// LAYOUT
margin-top initial=initialMargin, converter=convertLengthOrAuto

// LAYOUT
max-height initial=initialMaxSize, converter=convertLengthMaxSizing

// LAYOUT
max-width initial=initialMaxSize, converter=convertLengthMaxSizing

// LAYOUT
min-height initial=initialMinSize, converter=convertLengthSizing

// LAYOUT
min-width initial=initialMinSize, converter=convertLengthSizing

object-fit runtime_flag=ObjectFitPosition, type_name=ObjectFit
object-position runtime_flag=ObjectFitPosition, converter=convertLengthPoint
opacity type_name=float

// LAYOUT
order type_name=int

outline-color custom_all
outline-offset converter=convertComputedLength<int>
outline-style custom_all
outline-width converter=convertLineWidth<unsigned short>

// OBSOLETE
overflow-wrap inherited

// OBSOLETE
overflow-x type_name=EOverflow

// OBSOLETE
overflow-y type_name=EOverflow

// LAYOUT
padding-bottom initial=initialPadding, converter=convertLength

// LAYOUT
padding-left initial=initialPadding, converter=convertLength

// LAYOUT
padding-right initial=initialPadding, converter=convertLength

// LAYOUT
padding-top initial=initialPadding, converter=convertLength

perspective custom_value
perspective-origin custom_all

// OBSOLETE
pointer-events inherited

// LAYOUT
position

// LAYOUT
right initial=initialOffset, converter=convertLengthOrAuto

tab-size inherited, type_name=unsigned
text-align inherited, custom_value
text-align-last runtime_flag=CSS3Text, inherited, type_name=TextAlignLast
// FIXME: We shouldn't switch between shorthand/not shorthand based on a runtime flag
text-decoration use_handlers_for=CSSPropertyTextDecorationLine, longhands=text-decoration-line;text-decoration-style;text-decoration-color
text-decoration-color runtime_flag=CSS3TextDecorations, custom_all
text-decoration-line runtime_flag=CSS3TextDecorations, name_for_methods=TextDecoration, converter=convertFlags<TextDecoration>
text-decoration-style runtime_flag=CSS3TextDecorations, type_name=TextDecorationStyle
text-indent inherited, custom_all
text-justify runtime_flag=CSS3Text, inherited, type_name=TextJustify
text-overflow type_name=TextOverflow
text-shadow inherited, converter=convertShadow
text-underline-position runtime_flag=CSS3TextDecorations, inherited, type_name=TextUnderlinePosition

// LAYOUT
top initial=initialOffset, converter=convertLengthOrAuto

// OBSOLETE
touch-action converter=convertFlags<TouchAction>

// OBSOLETE
touch-action-delay runtime_flag=CSSTouchActionDelay, inherited, type_name=TouchActionDelay

transform custom_value
transform-origin custom_all
transform-style name_for_methods=TransformStyle3D
unicode-bidi

// LAYOUT
vertical-align custom_inherit, custom_value

filter custom_value
-webkit-aspect-ratio inherited, custom_all
-webkit-background-clip use_handlers_for=CSSPropertyBackgroundClip
-webkit-background-composite custom_all
-webkit-background-origin use_handlers_for=CSSPropertyBackgroundOrigin
-webkit-background-size use_handlers_for=CSSPropertyBackgroundSize

// LAYOUT
-webkit-border-horizontal-spacing inherited, name_for_methods=HorizontalBorderSpacing, converter=convertComputedLength<short>

// LAYOUT
-webkit-border-vertical-spacing inherited, name_for_methods=VerticalBorderSpacing, converter=convertComputedLength<short>

-webkit-box-decoration-break
-webkit-box-shadow use_handlers_for=CSSPropertyBoxShadow
-webkit-clip-path custom_value

// OBSOLETE
-webkit-highlight inherited, converter=convertString<CSSValueNone>

-webkit-hyphenate-character inherited, name_for_methods=HyphenationString, converter=convertString<CSSValueAuto>
-webkit-line-box-contain inherited, converter=convertLineBoxContain
-webkit-line-break inherited, type_name=LineBreak
-webkit-perspective custom_all
-webkit-perspective-origin custom_all
-webkit-perspective-origin-x converter=convertLength
-webkit-perspective-origin-y converter=convertLength
-webkit-rtl-ordering inherited, type_name=Order, setter=setRTLOrdering, initial=initialRTLOrdering

// OBSOLETE
-webkit-tap-highlight-color inherited, converter=convertColor

-webkit-text-emphasis-color inherited, custom_all
-webkit-text-emphasis-position inherited, type_name=TextEmphasisPosition
-webkit-text-emphasis-style inherited, custom_all
-webkit-text-fill-color inherited, custom_all
-webkit-text-stroke-color inherited, custom_all
-webkit-text-stroke-width inherited, converter=convertTextStrokeWidth
-webkit-transform use_handlers_for=CSSPropertyTransform
-webkit-transform-origin-x converter=convertLength
-webkit-transform-origin-y converter=convertLength
-webkit-transform-origin-z converter=convertComputedLength<float>
-webkit-transform-style name_for_methods=TransformStyle3D

// OBSOLETE
-webkit-user-modify inherited

// OBSOLETE
-webkit-user-select inherited

white-space inherited

// LAYOUT
width initial=initialSize, converter=convertLengthSizing

word-break inherited
word-spacing inherited, initial=initialLetterWordSpacing, converter=convertSpacing
// UAs must treat 'word-wrap' as an alternate name for the 'overflow-wrap' property. So using the same handlers.
word-wrap inherited, name_for_methods=OverflowWrap

// consider changing this to just be the way you decide what order to paint siblings by default
z-index type_name=unsigned, custom_all


// Non-standard direction aware properties
-webkit-border-end-color direction_aware
-webkit-border-end-style direction_aware
-webkit-border-end-width direction_aware
-webkit-border-start-color direction_aware
-webkit-border-start-style direction_aware
-webkit-border-start-width direction_aware
-webkit-border-before-color direction_aware
-webkit-border-before-style direction_aware
-webkit-border-before-width direction_aware
-webkit-border-after-color direction_aware
-webkit-border-after-style direction_aware
-webkit-border-after-width direction_aware

// LAYOUT
-webkit-margin-end direction_aware

// LAYOUT
-webkit-margin-start direction_aware

// LAYOUT
-webkit-margin-before direction_aware

// LAYOUT
-webkit-margin-after direction_aware

// LAYOUT
-webkit-padding-end direction_aware

// LAYOUT
-webkit-padding-start direction_aware

// LAYOUT
-webkit-padding-before direction_aware

// LAYOUT
-webkit-padding-after direction_aware

// LAYOUT
-webkit-logical-width direction_aware

// LAYOUT
-webkit-logical-height direction_aware

// LAYOUT
-webkit-min-logical-width direction_aware

// LAYOUT
-webkit-min-logical-height direction_aware

// LAYOUT
-webkit-max-logical-width direction_aware

// LAYOUT
-webkit-max-logical-height direction_aware

// OBSOLETE
orientation builder_skip

// OBSOLETE
src builder_skip

// OBSOLETE
unicode-range builder_skip

-webkit-font-size-delta builder_skip
-webkit-text-decorations-in-effect inherited, builder_skip

// Shorthands
background longhands=background-image;background-position-x;background-position-y;background-size;background-repeat-x;background-repeat-y;background-attachment;background-origin;background-clip;background-color
background-position longhands=background-position-x;background-position-y
background-repeat longhands=background-repeat-x;background-repeat-y
border longhands=border-top-color;border-top-style;border-top-width;border-right-color;border-right-style;border-right-width;border-bottom-color;border-bottom-style;border-bottom-width;border-left-color;border-left-style;border-left-width
border-bottom longhands=border-bottom-width;border-bottom-style;border-bottom-color
border-color longhands=border-top-color;border-right-color;border-bottom-color;border-left-color
border-left longhands=border-left-width;border-left-style;border-left-color
border-radius longhands=border-top-left-radius;border-top-right-radius;border-bottom-right-radius;border-bottom-left-radius
border-right longhands=border-right-width;border-right-style;border-right-color
border-spacing longhands=-webkit-border-horizontal-spacing;-webkit-border-vertical-spacing
border-style longhands=border-top-style;border-right-style;border-bottom-style;border-left-style
border-top longhands=border-top-width;border-top-style;border-top-color
border-width longhands=border-top-width;border-right-width;border-bottom-width;border-left-width

// LAYOUT
flex longhands=flex-grow;flex-shrink;flex-basis

// LAYOUT
flex-flow longhands=flex-direction;flex-wrap

margin longhands=margin-top;margin-right;margin-bottom;margin-left
outline longhands=outline-color;outline-style;outline-width
overflow longhands=overflow-x;overflow-y
padding longhands=padding-top;padding-right;padding-bottom;padding-left
-webkit-border-after longhands=-webkit-border-after-width;-webkit-border-after-style;-webkit-border-after-color
-webkit-border-before longhands=-webkit-border-before-width;-webkit-border-before-style;-webkit-border-before-color
-webkit-border-end longhands=-webkit-border-end-width;-webkit-border-end-style;-webkit-border-end-color
// "-webkit-border-radius: 1px 2px" behaves as "border-radius: 1px / 2px"
-webkit-border-radius longhands=border-top-left-radius;border-top-right-radius;border-bottom-right-radius;border-bottom-left-radius
-webkit-border-start longhands=-webkit-border-start-width;-webkit-border-start-style;-webkit-border-start-color
-webkit-text-emphasis longhands=-webkit-text-emphasis-style;-webkit-text-emphasis-color
-webkit-text-stroke longhands=-webkit-text-stroke-width;-webkit-text-stroke-color
-webkit-transform-origin longhands=-webkit-transform-origin-x;-webkit-transform-origin-y;-webkit-transform-origin-z
