1// Copyright 2017 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5{
6// This file specifies all the CSS properties we support and the necessary
7// information for our code generation. The various supported arguments
8// are described below with example usage
9
10  parameters: {
11    // - alias_for: "other-property"
12    // Properties specifying alias_for should be virtually identical to the
13    // properties they alias. Minor parsing differences are allowed as long as
14    // the CSSValues created are of the same format of the aliased property.
15    alias_for: {
16    },
17
18    // - longhands: ["property", "other-property"]
19    // The property is a shorthand for several other properties.
20    longhands: {
21    },
22
23    // - property_methods: ["method1", "method2"]
24    // List of methods that are implemented in the CSSProperty for this
25    // property.
26    property_methods: {
27      default: [],
28      valid_type: "list",
29      valid_values: [
30        "ParseSingleValue",
31        "ParseShorthand",
32        "CSSValueFromComputedStyleInternal",
33        "ColorIncludingFallback",
34        "InitialValue"
35      ],
36    },
37
38    // Suppresses code generation for the specified style builder functions.
39    // This allows us to provide hand-written style builder functions in cases
40    // where it's needed.
41    style_builder_custom_functions: {
42      default: [],
43      valid_type: "list",
44      valid_values: [
45        "initial",
46        "inherit",
47        "value",
48      ],
49    },
50
51    // Affects how the style building functions are generated.
52    //
53    // Several property groups (e.g. color properties) deviate from the default
54    // style builder application, yet there are enough of these properties that
55    // we want to generate code for them rather than having manually written
56    // style builder functions.
57    style_builder_template: {
58      valid_values: [
59        "animation",
60        "auto",
61        "background_layer",
62        "border_image",
63        "color",
64        "counter",
65        "empty",
66        "grid",
67        // The legacy template means that regular code generation should not be
68        // be performed, and that the property is hard-coded in
69        // style_builder_functions.cc.tmpl.
70        "legacy",
71        "mask_box",
72        "mask_layer",
73        "transition",
74        "visited_color",
75      ],
76    },
77
78    // Additional arguments to 'style_builder_template' may be provided here.
79    style_builder_template_args: {
80      default: {},
81      valid_type: "dict"
82    },
83
84    // - is_descriptor
85    // Whether it is a CSS descriptor. Descriptors define the characteristics of
86    // an at-rule. E.g. @viewport is an at-rule, and width is a valid descriptor
87    // for @viewport. Descriptors and CSS properties with the same name are
88    // handled together in this file.
89    // TODO(crbug.com/752745): Don't use CSSPropertyID for descriptors.
90    // - is_property
91    // Whether it is a CSS property. If this is false then is_descriptor must be
92    // true.
93    is_descriptor: {
94      default: false,
95      valid_type: "bool",
96    },
97    is_property: {
98      default: true,
99      valid_type: "bool",
100    },
101
102    // - independent
103    // This property affects only one field on ComputedStyle, and can be set
104    // directly during inheritance instead of forcing a recalc.
105    // StyleResolver and StyleAdjuster are not invoked when these properties
106    // are changed on a parent. Recalcs only happen if at least one
107    // non-independent inherited property is changed in the parent.
108    independent: {
109      default: false,
110      valid_type: "bool",
111    },
112
113    // - affected_by_all
114    // The affected_by_all flag indicates whether a change to the CSS property
115    // "all" affects this property.
116    // c.f. https://drafts.csswg.org/css-cascade/#all-shorthand
117    // Descriptors (is_property: false) are never affected by changes to the
118    // all property.
119    affected_by_all: {
120      default: true,
121      valid_type: "bool",
122    },
123
124    // - interpolable
125    // The interpolable flag indicates whether a property can be animated
126    // smoothly. If this flag is set, the property should also be added to the
127    // switch statements in CSSPropertyEquality and CSSInterpolationTypesMap.
128    interpolable: {
129      default: false,
130      valid_type: "bool",
131    },
132
133    // - inherited
134    // The property will inherit by default if no value is specified, typically
135    // mentioned in specifications as "Inherited: yes"
136    inherited: {
137      default: false,
138      valid_type: "bool",
139    },
140
141    // - compositable
142    // The property can be animated by the compositor
143    compositable: {
144      default: false,
145      valid_type: "bool",
146    },
147
148    // - runtime_flag
149    // The name of the flag on RuntimeEnabledFeatures
150    // (e.g. "CSSOverscrollBehavior") that conditionally enables the
151    // property.
152    // This doesn't currently work with alias_for.
153    runtime_flag: {
154      valid_type: "str",
155    },
156
157    // - field_group
158    // Name of the group that this field belongs to. Fields in the same group
159    // are stored together as a nested class inside ComputedStyle and
160    // dynamically allocated on use.
161    // Leave this out if the field is stored directly on ComputedStyle.
162    // If you want to auto group this property use: field_group: "*[->subgroup]"
163    // If you use the auto grouping function check if your property is in
164    // css_properties_ranking.json5
165    // -  If yes, only provide: field_group: "*"
166    // -  If no, you can specify a subgroup following the asterisk:
167    //    field_group: "*[->subgroup]"
168    field_group: {
169      valid_type: "str",
170    },
171
172    // - field_size
173    // Number of bits needed to store this field.
174    field_size: {
175      valid_type: "int",
176    },
177
178    // - field_template
179    // Affects how the interface to this field is generated.
180    // TODO(sashab, meade): Remove this once TypedOM types are specified for
181    // every property, since this value can be inferred from that.
182    field_template: {
183      valid_values: [
184        // Field is stored as an enum and has a initial/getter/setter/resetter.
185        // If include_paths is empty, we would also generate the corresponding
186        // enum definition in ComputedStyleConstants.h.
187        "keyword",
188        // Field can take on any subset of values from a list of keywords.
189        "multi_keyword",
190        // Field stores a primitive value like int/bool. The type is specified
191        // by type_name. The interface has a initial/getter/setter/resetter.
192        "primitive",
193        // Field is stored as a bool, whose default value is false
194        // and can only be set to true. Has a initial/getter/setter.
195        "monotonic_flag",
196        // Field has type specified at type_name and has a getter/setter.
197        // Also has a setter taking an rvalue reference. Cannot be packed.
198        "external",
199        // Field is stored as a wrapper_pointer_name to a class.
200        "pointer",
201        // Preset "length" for external and Length class
202        // This preset represents alias templates that will be replace by
203        // entries in CSSFieldAlias.json5.
204        "<[a-z]+>"
205      ],
206    },
207
208    // - include_paths: ["path/to/file1.h", "path/to/file2.h"]
209    // List of files containing the definitions of types in 'type_name'. Each of
210    // these files will appear as a #include in ComputedStyleBase.h. For
211    // example, if the type_name is 'Vector<String>', include_paths should be
212    // ["third_party/blink/renderer/platform/wtf/vector.h",
213    //  "third_party/blink/renderer/platform/wtf/text/wtf_string.h"]
214    include_paths: {
215      default: [],
216    },
217
218    // Name of the pointer type that wraps this field (e.g. scoped_refptr).
219    wrapper_pointer_name: {
220      valid_type: "str",
221      valid_values: ["scoped_refptr", "Persistent", "std::unique_ptr"],
222    },
223
224    // - keywords: ["keyword1", "keyword2"]
225    // This specifies all valid keyword values for the property.
226    // TODO(sashab): Once all properties are represented here, delete
227    // CSSValueKeywords.in and use this list instead.
228    keywords: {
229      default: [],
230    },
231
232    // - default_value: "keyword-value"
233    // This specifies the default value for this field.
234    // - for keyword fields, this is the initial keyword
235    // - for other fields, this is a string containg the C++ expression
236    //   that is used to initialise the field.
237    default_value: {
238    },
239
240    // Flags which go into CSSOMTypes:
241    // - typedom_types: ["Keyword", "Type", "OtherType"]
242    // The property can take types specified in typedom_types for CSS Typed OM.
243    // - separator
244    // The property supports a list of values, and when there is more than one,
245    // it is separated with this character.
246    typedom_types: {
247      default: [],
248      valid_type: "list",
249      valid_values: [
250        "Angle",
251        "Flex",
252        "Frequency",
253        "Keyword",
254        "Length",
255        "Number",
256        "Percentage",
257        "Position",
258        "Resolution",
259        "Time",
260        "Transform",
261        "Unparsed",
262        "Image"
263      ],
264    },
265    separator: {
266      valid_values: [",", " ", "/"],
267    },
268
269    // The remaining arguments are used for the StyleBuilder and allow us to
270    // succinctly describe how to apply properties. When default handlers are
271    // not sufficient, we should prefer to use converter, and failing that
272    // define custom property handlers in CSSProperty subclasses. We should only
273    // use style_builder_functions.tmpl to define handlers when there are
274    // multiple properties requiring the same handling, but converter doesn't
275    // suffice.
276
277    // - font
278    // The default property handlers call into the FontBuilder instead of
279    // setting values directly onto the ComputedStyle
280    // - svg
281    // The default property handlers access the SVGComputedStyle
282    font: {
283      default: false,
284      valid_type: "bool",
285    },
286    svg: {
287      default: false,
288      valid_type: "bool",
289    },
290
291    // - name_for_methods: "BlendMode"
292    // Tweaks how we choose defaults for getter, setter, initial and type_name.
293    // For example, setting this to BlendMode will make us use a setter of
294    // setBlendMode
295    // - initial
296    // The static function to invoke on ComputedStyleInitialValues,
297    // SVGComputedStyle, or FontBuilder to retrieve the initial value.
298    // Defaults to e.g. InitialBorderBottomLeft.
299    // - getter
300    // The ComputedStyle getter, defaults to e.g. BorderBottomLeft
301    // - setter
302    // The ComputedStyle setter, defaults to e.g. GetBorderBottomLeft
303    // - type_name
304    // The computed type for the property. Only required for the default value
305    // application, defaults to e.g. EDisplay
306    name_for_methods: {
307    },
308    initial: {
309    },
310    getter: {
311    },
312    setter: {
313    },
314    type_name: {
315    },
316
317    // - custom_function: Any function specified in the list is not
318    // automatically generated in ComputedStyle. Use this when a generated
319    // function is not correct.
320    computed_style_custom_functions: {
321      default: [],
322      valid_type: "list",
323      valid_values: ["initial", "getter", "setter", "reset", "mutable"],
324    },
325
326    // - converter: "ConvertRadius"
327    // The StyleBuilder will call the specified function on
328    // StyleBuilderConverter to convert a CSSValue to an appropriate platform
329    // value
330    converter: {
331    },
332
333    // Options used for properties that depend on writing-mode and/or
334    // text-direction (e.g. css-logical).
335    direction_aware_options: {
336      // The name of the mapping function used to convert from a logical
337      // property to a physical property. Corresponds to a function in
338      // CSSDirectionAwareResolver. E.g. a value of "baz" corresponds to
339      // CSSDirectionAwareResolver::ResolveBaz(...).
340      resolver: {
341        valid_type: "str",
342        valid_values: ["inline-start", "inline-end", "block-start", "block-end",
343                       "inline", "block"],
344      },
345      // The name of the physical property group to pass to the resolver.
346      // The group represents the physical part of the "logical property group"
347      // described by css-logical [1].
348      //
349      // In terms of code generation, each value corresponds to a function in
350      // CSSDirectionAwareResolver. E.g. a value of "foo-bar" would correspond
351      // to CSSDirectionAwareResolver::FooBarGroup().
352      //
353      // [1] https://drafts.csswg.org/css-logical/#logical-property-group
354      physical_group: {
355        valid_type: "str",
356        valid_values: ["border", "border-color", "border-style", "border-width",
357                       "inset", "margin", "max-size",
358                       "min-size", "overflow", "padding", "scroll-margin",
359                       "scroll-padding", "size", "visited-border-color"],
360      }
361    },
362
363    // - surrogate_for: "other-property"
364    //
365    // A surrogate is a property which acts like another property. Unlike an
366    // alias (which is resolved as parse-time), a surrogate exists alongside
367    // the original in the parsed rule, and in the cascade.
368    //
369    // However, surrogates modify the same fields on ComputedStyle. Examples of
370    // surrogates are:
371    //
372    //  * -webkit-writing-mode (surrogate of writing-mode)
373    //  * inline-size (surrogate for width, or height)
374    //  * All css-logical propeties in general
375    //
376    // Note that for properties that use direction_aware_options,
377    // 'surrogate_for' should not be set, as the mapping is determined at
378    // run-time (depending og e.g. 'direction').
379    surrogate_for: {
380      valid_type: "str",
381    },
382
383    // - priority: "High"
384    // The priority level for computing the property. Valid values are
385    // "Animation" (highest), "High" and "Low". Properties with the same
386    // priority level are grouped and computed in alphabetical order. The
387    // default value is "Low".
388    priority: {
389      default: "Low",
390      valid_values: ["Animation", "High", "Low"],
391    },
392
393    // - layout_dependent
394    // The resolved value used for getComputedStyle() depends on layout for this
395    // property, which means we may need to update layout to return the correct
396    // value from getComputedStyle(). Setting this to true will override
397    // IsLayoutDependentProperty() to return true and require a custom
398    // IsLayoutDependent() which typically checks for LayoutObject existence and
399    // type.
400    layout_dependent: {
401      default: false,
402      valid_type: "bool",
403    },
404
405    // - visited_property_for: "other-property"
406    // CSS properties that are allowed in :visited selectors each have an
407    // internal "companion" property with the visited value. For privacy reasons
408    // CSSOM APIs must return computed values as if links aren't visited, but
409    // for rendering purposes we need the value with the :visited rules applied.
410    //
411    // This means that the regular property (e.g. background-color) represents
412    // the value as seen by CSSOM, and the -internal-visited counterpart (e.g.
413    // -internal-visited-background-color) represents the same property as seen
414    // by painting.
415    visited_property_for: {
416      valid_type: "str",
417    },
418
419    // - affected_by_forced_colors
420    // The property value will be overridden with the default value defined in
421    // the forced colors UA style sheet when forced colors mode is enabled and
422    // forced-color-adjust is set to auto.
423    affected_by_forced_colors: {
424      default: false,
425      valid_type: "bool",
426    },
427
428    // - valid_for_first_letter: true
429    //
430    // https://drafts.csswg.org/css-pseudo-4/#first-letter-styling
431    valid_for_first_letter: {
432      default: false,
433      valid_type: "bool",
434    },
435
436    // - valid_for_cue: true
437    //
438    // https://w3c.github.io/webvtt/#the-cue-pseudo-element
439    valid_for_cue: {
440      default: false,
441      valid_type: "bool",
442    },
443
444    // - valid_for_marker: true
445    //
446    // https://drafts.csswg.org/css-pseudo-4/#marker-pseudo
447    valid_for_marker: {
448      default: false,
449      valid_type: "bool",
450    },
451  },
452
453  // Members in the data objects should appear in the same order as in the
454  // parameters object above
455  data: [
456    // Properties with StyleBuilder handling
457
458    // Animation Priority properties
459    {
460      name: "animation-delay",
461      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "InitialValue"],
462      style_builder_template: "animation",
463      style_builder_template_args: {
464        attribute: "Delay",
465      },
466      priority: "Animation",
467      typedom_types: ["Time"],
468      separator: ",",
469      valid_for_marker: true,
470    },
471    {
472      name: "animation-direction",
473      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "InitialValue"],
474      keywords: ["normal", "reverse", "alternate", "alternate-reverse"],
475      typedom_types: ["Keyword"],
476      separator: ",",
477      style_builder_template: "animation",
478      style_builder_template_args: {
479        attribute: "Direction",
480      },
481      priority: "Animation",
482      separator: ",",
483      valid_for_marker: true,
484    },
485    {
486      name: "animation-duration",
487      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "InitialValue"],
488      separator: ",",
489      style_builder_template: "animation",
490      style_builder_template_args: {
491        attribute: "Duration",
492      },
493      priority: "Animation",
494      typedom_types: ["Time"],
495      separator: ",",
496      valid_for_marker: true,
497    },
498    {
499      name: "animation-fill-mode",
500      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "InitialValue"],
501      style_builder_template: "animation",
502      style_builder_template_args: {
503        attribute: "FillMode",
504      },
505      priority: "Animation",
506      keywords: ["none", "forwards", "backwards", "both"],
507      typedom_types: ["Keyword"],
508      separator: ",",
509      valid_for_marker: true,
510    },
511    {
512      name: "animation-iteration-count",
513      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "InitialValue"],
514      keywords: ["infinite"],
515      separator: ",",
516      style_builder_template: "animation",
517      style_builder_template_args: {
518        attribute: "IterationCount",
519      },
520      priority: "Animation",
521      keywords: ["infinite"],
522      typedom_types: ["Keyword", "Number"],
523      separator: ",",
524      valid_for_marker: true,
525    },
526    {
527      name: "animation-name",
528      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "InitialValue"],
529      style_builder_template: "animation",
530      style_builder_template_args: {
531        attribute: "Name",
532      },
533      priority: "Animation",
534      keywords: ["none"],
535      typedom_types: ["Keyword"],
536      separator: ",",
537      valid_for_marker: true,
538    },
539    {
540      name: "animation-play-state",
541      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "InitialValue"],
542      style_builder_template: "animation",
543      style_builder_template_args: {
544        attribute: "PlayState",
545      },
546      priority: "Animation",
547      keywords: ["running", "paused"],
548      typedom_types: ["Keyword"],
549      separator: ",",
550      valid_for_marker: true,
551    },
552    {
553      name: "animation-timing-function",
554      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "InitialValue"],
555      style_builder_template: "animation",
556      style_builder_template_args: {
557        attribute: "TimingFunction",
558      },
559      priority: "Animation",
560      keywords: [
561        "linear",
562        "ease",
563        "ease-in",
564        "ease-out",
565        "ease-in-out",
566        "jump-both",
567        "jump-end",
568        "jump-none",
569        "jump-start",
570        "step-start",
571        "step-end"
572      ],
573      typedom_types: ["Keyword"],
574      separator: ",",
575      valid_for_marker: true,
576    },
577    {
578      name: "transition-delay",
579      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "InitialValue"],
580      style_builder_template: "transition",
581      style_builder_template_args: {
582        attribute: "Delay",
583      },
584      priority: "Animation",
585      typedom_types: ["Time"],
586      separator: ",",
587      valid_for_marker: true,
588    },
589    {
590      name: "transition-duration",
591      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "InitialValue"],
592      typedom_types: ["Keyword", "Time"],
593      separator: ",",
594      style_builder_template: "transition",
595      style_builder_template_args: {
596        attribute: "Duration",
597      },
598      priority: "Animation",
599      valid_for_marker: true,
600    },
601    {
602      name: "transition-property",
603      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "InitialValue"],
604      style_builder_template: "transition",
605      style_builder_template_args: {
606        attribute: "Property",
607      },
608      priority: "Animation",
609      keywords: ["none"],
610      typedom_types: ["Keyword"],
611      valid_for_marker: true,
612    },
613    {
614      name: "transition-timing-function",
615      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "InitialValue"],
616      style_builder_template: "transition",
617      style_builder_template_args: {
618        attribute: "TimingFunction",
619      },
620      priority: "Animation",
621      keywords: [
622        "linear",
623        "ease",
624        "ease-in",
625        "ease-out",
626        "ease-in-out",
627        "jump-both",
628        "jump-end",
629        "jump-none",
630        "jump-start",
631        "step-start",
632        "step-end"],
633      typedom_types: ["Keyword"],
634      separator: ",",
635      valid_for_marker: true,
636    },
637
638    // High Priority and all other font properties.
639    // Other properties can depend upon high priority properties
640    // (e.g. font-size / ems)
641    {
642      name: "color",
643      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "ColorIncludingFallback"],
644      interpolable: true,
645      inherited: true,
646      field_group: "inherited",
647      field_template: "external",
648      include_paths: ["third_party/blink/renderer/platform/graphics/color.h"],
649      default_value: "Color::kBlack",
650      type_name: "Color",
651      computed_style_custom_functions: ["getter", "setter"],
652      style_builder_custom_functions: ["initial", "inherit", "value"],
653      priority: "High",
654      keywords: ["currentcolor"],
655      typedom_types: ["Keyword"],
656      affected_by_forced_colors: true,
657      valid_for_first_letter: true,
658      valid_for_cue: true,
659      valid_for_marker: true,
660    },
661    {
662      name: "direction",
663      property_methods: ["CSSValueFromComputedStyleInternal"],
664      affected_by_all: false,
665      inherited: true,
666      field_template: "keyword",
667      include_paths: ["third_party/blink/renderer/platform/text/text_direction.h"],
668      keywords: ["ltr", "rtl"],
669      typedom_types: ["Keyword"],
670      default_value: "ltr",
671      type_name: "TextDirection",
672      style_builder_custom_functions: ["value"],
673      priority: "High",
674      valid_for_marker: true,
675    },
676    {
677      name: "font-family",
678      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
679      is_descriptor: true,
680      inherited: true,
681      font: true,
682      name_for_methods: "FamilyDescription",
683      type_name: "FontDescription::FamilyDescription",
684      converter: "ConvertFontFamily",
685      priority: "High",
686      valid_for_first_letter: true,
687      valid_for_cue: true,
688      valid_for_marker: true,
689    },
690    {
691      name: "font-kerning",
692      property_methods: ["CSSValueFromComputedStyleInternal"],
693      inherited: true,
694      font: true,
695      name_for_methods: "Kerning",
696      type_name: "FontDescription::Kerning",
697      priority: "High",
698      keywords: ["auto", "normal", "none"],
699      typedom_types: ["Keyword"],
700      valid_for_first_letter: true,
701      valid_for_marker: true,
702    },
703    {
704      name: "font-optical-sizing",
705      property_methods: ["CSSValueFromComputedStyleInternal"],
706      inherited: true,
707      font: true,
708      name_for_methods: "FontOpticalSizing",
709      type_name: "OpticalSizing",
710      priority: "High",
711      keywords: ["auto", "none"],
712      typedom_types: ["Keyword"],
713      valid_for_first_letter: true,
714      valid_for_marker: true,
715    },
716    {
717      name: "font-size",
718      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
719      interpolable: true,
720      inherited: true,
721      font: true,
722      name_for_methods: "Size",
723      getter: "GetSize",
724      converter: "ConvertFontSize",
725      priority: "High",
726      keywords: ["xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large", "xxx-large", "larger", "smaller", "-webkit-xxx-large"],
727      typedom_types: ["Keyword", "Length", "Percentage"],
728      valid_for_first_letter: true,
729      valid_for_cue: true,
730      valid_for_marker: true,
731    },
732    {
733      name: "font-size-adjust",
734      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
735      interpolable: true,
736      inherited: true,
737      runtime_flag: "CSSFontSizeAdjust",
738      font: true,
739      name_for_methods: "SizeAdjust",
740      converter: "ConvertFontSizeAdjust",
741      priority: "High",
742      keywords: ["none"],
743      typedom_types: ["Keyword", "Number"],
744      valid_for_first_letter: true,
745      valid_for_marker: true,
746    },
747    {
748      name: "font-stretch",
749      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
750      is_descriptor: true,
751      inherited: true,
752      font: true,
753      name_for_methods: "Stretch",
754      converter: "ConvertFontStretch",
755      priority: "High",
756      keywords: [
757        "normal", "ultra-condensed", "extra-condensed", "condensed",
758        "semi-condensed", "semi-expanded", "expanded", "extra-expanded", "ultra-expanded"
759      ],
760      typedom_types: ["Keyword", "Percentage"],
761      valid_for_first_letter: true,
762      valid_for_cue: true,
763      valid_for_marker: true,
764    },
765    {
766      name: "font-style",
767      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
768      is_descriptor: true,
769      inherited: true,
770      font: true,
771      name_for_methods: "Style",
772      converter: "ConvertFontStyle",
773      priority: "High",
774      keywords: ["normal", "italic", "oblique"],
775      typedom_types: ["Keyword"],
776      valid_for_first_letter: true,
777      valid_for_cue: true,
778      valid_for_marker: true,
779    },
780    {
781      name: "font-variant-ligatures",
782      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
783      inherited: true,
784      font: true,
785      name_for_methods: "VariantLigatures",
786      type_name: "VariantLigatures",
787      converter: "ConvertFontVariantLigatures",
788      priority: "High",
789      keywords: [
790         "normal", "none", "common-ligatures", "no-common-ligatures",
791         "discretionary-ligatures", "no-discretionary-ligatures",
792         "historical-ligatures", "no-historical-ligatures", "contextual",
793         "no-contextual"
794      ],
795      typedom_types: ["Keyword"],
796      valid_for_first_letter: true,
797      valid_for_marker: true,
798    },
799    {
800      name: "font-variant-caps",
801      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
802      inherited: true,
803      font: true,
804      name_for_methods: "VariantCaps",
805      converter: "ConvertFontVariantCaps",
806      priority: "High",
807      keywords: [
808        "normal", "small-caps", "all-small-caps", "petite-caps",
809        "all-petite-caps", "unicase", "titling-caps"
810      ],
811      typedom_types: ["Keyword"],
812      valid_for_first_letter: true,
813      valid_for_marker: true,
814    },
815    {
816      name: "font-variant-east-asian",
817      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
818      inherited: true,
819      font: true,
820      name_for_methods: "VariantEastAsian",
821      converter: "ConvertFontVariantEastAsian",
822      priority: "High",
823      keywords: [
824         "normal", "jis78", "jis83", "jis90", "jis04", "simplified",
825         "traditional", "full-width", "proportional-width", "ruby"
826      ],
827      typedom_types: ["Keyword"],
828      valid_for_first_letter: true,
829      valid_for_marker: true,
830    },
831    {
832      name: "font-variant-numeric",
833      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
834      inherited: true,
835      font: true,
836      name_for_methods: "VariantNumeric",
837      converter: "ConvertFontVariantNumeric",
838      priority: "High",
839      keywords: [
840        "normal", "lining-nums", "oldstyle-nums", "proportional-nums",
841        "tabular-nums", "diagonal-fractions", "stacked-fractions", "ordinal",
842        "slashed-zero"
843      ],
844      typedom_types: ["Keyword"],
845      valid_for_first_letter: true,
846      valid_for_marker: true,
847    },
848    {
849      name: "font-weight",
850      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
851      is_descriptor: true,
852      interpolable: true,
853      inherited: true,
854      font: true,
855      name_for_methods: "Weight",
856      converter: "ConvertFontWeight",
857      priority: "High",
858      keywords: ["normal", "bold", "bolder", "lighter"],
859      typedom_types: ["Keyword", "Number"],
860      valid_for_first_letter: true,
861      valid_for_cue: true,
862      valid_for_marker: true,
863    },
864    {
865      name: "font-feature-settings",
866      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
867      is_descriptor: true,
868      inherited: true,
869      font: true,
870      name_for_methods: "FeatureSettings",
871      converter: "ConvertFontFeatureSettings",
872      priority: "High",
873      keywords: ["normal"],
874      typedom_types: ["Keyword"],
875      valid_for_first_letter: true,
876      valid_for_marker: true,
877    },
878    {
879      name: "font-variation-settings",
880      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
881      interpolable: true,
882      inherited: true,
883      font: true,
884      name_for_methods: "VariationSettings",
885      converter: "ConvertFontVariationSettings",
886      priority: "High",
887      keywords: ["normal"],
888      typedom_types: ["Keyword"],
889      valid_for_first_letter: true,
890      valid_for_cue: true,
891      valid_for_marker: true,
892    },
893    {
894      name: "-webkit-font-smoothing",
895      property_methods: ["CSSValueFromComputedStyleInternal"],
896      inherited: true,
897      font: true,
898      type_name: "FontSmoothingMode",
899      priority: "High",
900      valid_for_first_letter: true,
901    },
902    {
903      name: "forced-color-adjust",
904      property_methods: ["CSSValueFromComputedStyleInternal"],
905      inherited: true,
906      runtime_flag: "ForcedColors",
907      field_template: "keyword",
908      priority: "High",
909      keywords: ["auto", "none"],
910      typedom_types: ["Keyword"],
911      default_value: "auto",
912    },
913    {
914      name: "-webkit-locale",
915      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
916      inherited: true,
917      font: true,
918      style_builder_custom_functions: ["value"],
919      priority: "High",
920    },
921    {
922      name: "text-orientation",
923      property_methods: ["CSSValueFromComputedStyleInternal"],
924      inherited: true,
925      field_group: "*",
926      field_template: "keyword",
927      keywords: ["sideways", "mixed", "upright"],
928      typedom_types: ["Keyword"],
929      default_value: "mixed",
930      getter: "GetTextOrientation",
931      style_builder_custom_functions: ["value"],
932      priority: "High",
933    },
934    {
935      name: "-webkit-text-orientation",
936      property_methods: ["CSSValueFromComputedStyleInternal"],
937      inherited: true,
938      type_name: "TextOrientation",
939      style_builder_custom_functions: ["value"],
940      priority: "High",
941    },
942    {
943      name: "writing-mode",
944      property_methods: ["CSSValueFromComputedStyleInternal"],
945      inherited: true,
946      field_template: "keyword",
947      include_paths: ["third_party/blink/renderer/platform/text/writing_mode.h"],
948      keywords: ["horizontal-tb", "vertical-rl", "vertical-lr"],
949      typedom_types: ["Keyword"],
950      default_value: "horizontal-tb",
951      type_name: "WritingMode",
952      style_builder_custom_functions: ["value"],
953      priority: "High",
954    },
955    {
956      name: "-webkit-writing-mode",
957      property_methods: ["CSSValueFromComputedStyleInternal"],
958      inherited: true,
959      type_name: "WritingMode",
960      style_builder_custom_functions: ["value"],
961      priority: "High",
962      surrogate_for: "writing-mode",
963    },
964    {
965      name: "text-rendering",
966      property_methods: ["CSSValueFromComputedStyleInternal"],
967      inherited: true,
968      font: true,
969      type_name: "TextRenderingMode",
970      keywords: ["auto", "optimizespeed", "optimizelegibility", "geometricprecision"],
971      typedom_types: ["Keyword"],
972      priority: "High",
973    },
974    {
975      name: "zoom",
976      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
977      is_descriptor: true,
978      field_group: "visual",
979      field_template: "primitive",
980      default_value: "1.0",
981      type_name: "float",
982      style_builder_custom_functions: ["initial", "inherit", "value"],
983      priority: "High",
984    },
985    {
986      name: "align-content",
987      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
988      field_group: "*",
989      field_template: "external",
990      include_paths: ["third_party/blink/renderer/core/style/style_content_alignment_data.h"],
991      default_value: "StyleContentAlignmentData(ContentPosition::kNormal, ContentDistributionType::kDefault, OverflowAlignment::kDefault)",
992      type_name: "StyleContentAlignmentData",
993      converter: "ConvertContentAlignmentData",
994    },
995    {
996      name: "align-items",
997      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
998      field_group: "*",
999      field_template: "external",
1000      include_paths: ["third_party/blink/renderer/core/style/style_self_alignment_data.h"],
1001      default_value: "StyleSelfAlignmentData(ItemPosition::kNormal, OverflowAlignment::kDefault)",
1002      type_name: "StyleSelfAlignmentData",
1003      converter: "ConvertSelfOrDefaultAlignmentData",
1004    },
1005    {
1006      name: "alignment-baseline",
1007      property_methods: ["CSSValueFromComputedStyleInternal"],
1008      svg: true,
1009      keywords: ["baseline", "alphabetic", "ideographic", "middle", "central", "mathematical"],
1010      typedom_types: ["Keyword"]
1011    },
1012    {
1013      name: "align-self",
1014      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1015      field_group: "*",
1016      field_template: "external",
1017      include_paths: ["third_party/blink/renderer/core/style/style_self_alignment_data.h"],
1018      default_value: "StyleSelfAlignmentData(ItemPosition::kAuto, OverflowAlignment::kDefault)",
1019      type_name: "StyleSelfAlignmentData",
1020      converter: "ConvertSelfOrDefaultAlignmentData",
1021    },
1022    {
1023      name: "aspect-ratio",
1024      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1025      interpolable: false,
1026      field_group: "box",
1027      field_template: "external",
1028      keywords: ["auto"],
1029      default_value: "base::nullopt",
1030      type_name: "base::Optional<IntSize>",
1031      converter: "ConvertAspectRatio",
1032      include_paths: ["third_party/blink/renderer/platform/geometry/length_size.h"],
1033      runtime_flag: "CSSAspectRatioProperty"
1034    },
1035    {
1036      name: "backdrop-filter",
1037      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1038      interpolable: true,
1039      compositable: true,
1040      field_group: "*",
1041      field_template: "external",
1042      include_paths: ["third_party/blink/renderer/core/style/style_filter_data.h"],
1043      wrapper_pointer_name: "Persistent",
1044      default_value: "MakeGarbageCollected<StyleFilterData>()",
1045      type_name: "StyleFilterData",
1046      computed_style_custom_functions: ["initial", "getter","setter"],
1047      converter: "ConvertFilterOperations",
1048      keywords: ["none"],
1049      typedom_types: ["Keyword"],
1050    },
1051    {
1052      name: "backface-visibility",
1053      property_methods: ["CSSValueFromComputedStyleInternal"],
1054      field_group: "*",
1055      field_template: "keyword",
1056      keywords: ["visible", "hidden"],
1057      typedom_types: ["Keyword"],
1058      default_value: "visible",
1059    },
1060    {
1061      name: "background-attachment",
1062      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1063      keywords: ["scroll", "fixed", "local"],
1064      typedom_types: ["Keyword"],
1065      separator: " ",
1066      style_builder_template: "background_layer",
1067      style_builder_template_args: {
1068        fill_type: "Attachment",
1069      },
1070      valid_for_first_letter: true,
1071      valid_for_cue: true,
1072    },
1073    {
1074      name: "background-blend-mode",
1075      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1076      keywords: [
1077        "normal", "multiply", "screen", "overlay", "darken", "lighten",
1078        "color-dodge", "color-burn", "hard-light", "soft-light", "difference",
1079        "exclusion", "hue", "saturation", "color", "luminosity"
1080      ],
1081      typedom_types: ["Keyword"],
1082      separator: " ",
1083      style_builder_template: "background_layer",
1084      style_builder_template_args: {
1085        fill_type: "BlendMode",
1086        fill_type_getter: "GetBlendMode",
1087      },
1088      valid_for_first_letter: true,
1089    },
1090    {
1091      name: "background-clip",
1092      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1093      keywords: ["border-box", "padding-box", "content-box"],
1094      typedom_types: ["Keyword"],
1095      separator: " ",
1096      style_builder_template: "background_layer",
1097      style_builder_template_args: {
1098        fill_type: "Clip",
1099      },
1100      valid_for_first_letter: true,
1101      valid_for_cue: true,
1102    },
1103    {
1104      name: "background-color",
1105      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "ColorIncludingFallback"],
1106      interpolable: true,
1107      field_group: "background",
1108      field_template: "external",
1109      include_paths: ["third_party/blink/renderer/core/css/style_color.h"],
1110      default_value: "StyleColor(Color::kTransparent)",
1111      type_name: "StyleColor",
1112      computed_style_custom_functions: ["getter"],
1113      keywords: ["currentcolor"],
1114      typedom_types: ["Keyword"],
1115      converter: "ConvertStyleColor",
1116      style_builder_template: "color",
1117      style_builder_template_args: {
1118        initial_color: "ComputedStyleInitialValues::InitialBackgroundColor",
1119      },
1120      affected_by_forced_colors: true,
1121      valid_for_first_letter: true,
1122      valid_for_cue: true,
1123    },
1124    {
1125      name: "background-image",
1126      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1127      interpolable: true,
1128      keywords: ["auto", "none"],
1129      typedom_types: ["Keyword", "Image"],
1130      separator: " ",
1131      style_builder_template: "background_layer",
1132      style_builder_template_args: {
1133        fill_type: "Image",
1134        fill_type_getter: "GetImage",
1135      },
1136      valid_for_first_letter: true,
1137      valid_for_cue: true,
1138    },
1139    {
1140      name: "background-origin",
1141      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1142      keywords: ["border-box", "padding-box", "content-box"],
1143      typedom_types: ["Keyword"],
1144      separator: " ",
1145      style_builder_template: "background_layer",
1146      style_builder_template_args: {
1147        fill_type: "Origin",
1148      },
1149      valid_for_first_letter: true,
1150      valid_for_cue: true,
1151    },
1152    {
1153      name: "background-position-x",
1154      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1155      interpolable: true,
1156      style_builder_template: "background_layer",
1157      style_builder_template_args: {
1158        fill_type: "PositionX",
1159      },
1160      valid_for_first_letter: true,
1161      valid_for_cue: true,
1162    },
1163    {
1164      name: "background-position-y",
1165      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1166      interpolable: true,
1167      style_builder_template: "background_layer",
1168      style_builder_template_args: {
1169        fill_type: "PositionY",
1170      },
1171      valid_for_first_letter: true,
1172      valid_for_cue: true,
1173    },
1174    {
1175      name: "background-repeat-x",
1176      style_builder_template: "background_layer",
1177      style_builder_template_args: {
1178        fill_type: "RepeatX",
1179      },
1180      valid_for_first_letter: true,
1181      valid_for_cue: true,
1182    },
1183    {
1184      name: "background-repeat-y",
1185      style_builder_template: "background_layer",
1186      style_builder_template_args: {
1187        fill_type: "RepeatY",
1188      },
1189      valid_for_first_letter: true,
1190      valid_for_cue: true,
1191    },
1192    {
1193      name: "background-size",
1194      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1195      interpolable: true,
1196      keywords: ["auto", "cover", "contain"],
1197      typedom_types: ["Keyword", "Length", "Percentage"],
1198      separator: " ",
1199      style_builder_template: "background_layer",
1200      style_builder_template_args: {
1201        fill_type: "Size",
1202      },
1203      valid_for_first_letter: true,
1204      valid_for_cue: true,
1205    },
1206    {
1207      name: "baseline-shift",
1208      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1209      interpolable: true,
1210      svg: true,
1211      style_builder_custom_functions: ["inherit", "value"],
1212      keywords: ["sub", "super"],
1213      typedom_types: ["Keyword", "Percentage", "Length"]
1214    },
1215    {
1216      name: "border-bottom-color",
1217      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "ColorIncludingFallback"],
1218      interpolable: true,
1219      field_group: "surround",
1220      field_template: "external",
1221      include_paths: ["third_party/blink/renderer/platform/graphics/color.h"],
1222      default_value: "0",
1223      type_name: "Color",
1224      computed_style_custom_functions: ["getter", "setter"],
1225      keywords: ["currentcolor"],
1226      typedom_types: ["Keyword"],
1227      converter: "ConvertStyleColor",
1228      style_builder_template: "color",
1229      affected_by_forced_colors: true,
1230      valid_for_first_letter: true,
1231    },
1232    {
1233      name: "border-bottom-left-radius",
1234      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1235      interpolable: true,
1236      field_group: "surround",
1237      field_template: "external",
1238      include_paths: ["third_party/blink/renderer/platform/geometry/length_size.h"],
1239      default_value: "LengthSize(Length::Fixed(0), Length::Fixed(0))",
1240      type_name: "LengthSize",
1241      converter: "ConvertRadius",
1242      typedom_types: ["Length", "Percentage"],
1243      valid_for_first_letter: true,
1244    },
1245    {
1246      name: "border-bottom-right-radius",
1247      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1248      interpolable: true,
1249      field_group: "surround",
1250      field_template: "external",
1251      include_paths: ["third_party/blink/renderer/platform/geometry/length_size.h"],
1252      default_value: "LengthSize(Length::Fixed(0), Length::Fixed(0))",
1253      type_name: "LengthSize",
1254      converter: "ConvertRadius",
1255      typedom_types: ["Length", "Percentage"],
1256      valid_for_first_letter: true,
1257    },
1258    {
1259      name: "border-bottom-style",
1260      property_methods: ["CSSValueFromComputedStyleInternal"],
1261      field_group: "surround",
1262      field_template: "keyword",
1263      keywords: [
1264        "none", "hidden", "inset", "groove", "outset", "ridge", "dotted",
1265        "dashed", "solid", "double"
1266      ],
1267      typedom_types: ["Keyword"],
1268      default_value: "none",
1269      type_name: "EBorderStyle",
1270      valid_for_first_letter: true,
1271    },
1272    {
1273      name: "border-bottom-width",
1274      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1275      interpolable: true,
1276      field_group: "surround",
1277      field_template: "external",
1278      include_paths: ["third_party/blink/renderer/platform/geometry/layout_unit.h"],
1279      keywords: ["thin", "medium", "thick"],
1280      default_value: "LayoutUnit(3)",
1281      typedom_types: ["Keyword", "Length"],
1282      type_name: "LayoutUnit",
1283      computed_style_custom_functions: ["getter", "setter"],
1284      converter: "ConvertBorderWidth",
1285      valid_for_first_letter: true,
1286    },
1287    {
1288      name: "border-collapse",
1289      property_methods: ["CSSValueFromComputedStyleInternal"],
1290      independent: true,
1291      inherited: true,
1292      field_template: "keyword",
1293      keywords: ["separate", "collapse"],
1294      typedom_types: ["Keyword"],
1295      default_value: "separate",
1296    },
1297    {
1298      name: "border-image-outset",
1299      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "InitialValue"],
1300      interpolable: true,
1301      typedom_types: ["Length", "Number"],
1302      style_builder_template: "border_image",
1303      style_builder_template_args: {
1304        modifier_type: "Outset",
1305      },
1306      valid_for_first_letter: true,
1307    },
1308    {
1309      name: "border-image-repeat",
1310      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "InitialValue"],
1311      keywords: ["stretch", "repeat", "round", "space"],
1312      typedom_types: ["Keyword"],
1313      style_builder_template: "border_image",
1314      style_builder_template_args: {
1315        modifier_type: "Repeat",
1316      },
1317      valid_for_first_letter: true,
1318    },
1319    {
1320      name: "border-image-slice",
1321      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "InitialValue"],
1322      interpolable: true,
1323      typedom_types: ["Number", "Percentage"],
1324      style_builder_template: "border_image",
1325      style_builder_template_args: {
1326        modifier_type: "Slice",
1327      },
1328      valid_for_first_letter: true,
1329    },
1330    {
1331      name: "border-image-source",
1332      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "InitialValue"],
1333      interpolable: true,
1334      keywords: ["none"],
1335      typedom_types: ["Keyword", "Image"],
1336      style_builder_custom_functions: ["value"],
1337      valid_for_first_letter: true,
1338    },
1339    {
1340      name: "border-image-width",
1341      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "InitialValue"],
1342      interpolable: true,
1343      keywords: ["auto"],
1344      typedom_types: ["Keyword", "Length", "Percentage", "Number"],
1345      style_builder_template: "border_image",
1346      style_builder_template_args: {
1347        modifier_type: "Width",
1348      },
1349      valid_for_first_letter: true,
1350    },
1351    {
1352      name: "border-left-color",
1353      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "ColorIncludingFallback"],
1354      interpolable: true,
1355      field_group: "surround",
1356      field_template: "external",
1357      include_paths: ["third_party/blink/renderer/platform/graphics/color.h"],
1358      default_value: "0",
1359      type_name: "Color",
1360      computed_style_custom_functions: ["getter", "setter"],
1361      keywords: ["currentcolor"],
1362      typedom_types: ["Keyword"],
1363      converter: "ConvertStyleColor",
1364      style_builder_template: "color",
1365      affected_by_forced_colors: true,
1366      valid_for_first_letter: true,
1367    },
1368    {
1369      name: "border-left-style",
1370      property_methods: ["CSSValueFromComputedStyleInternal"],
1371      field_group: "surround",
1372      field_template: "keyword",
1373      keywords: [
1374        "none", "hidden", "inset", "groove", "outset", "ridge", "dotted",
1375        "dashed", "solid", "double"
1376      ],
1377      typedom_types: ["Keyword"],
1378      default_value: "none",
1379      type_name: "EBorderStyle",
1380      valid_for_first_letter: true,
1381    },
1382    {
1383      name: "border-left-width",
1384      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1385      interpolable: true,
1386      field_group: "surround",
1387      field_template: "external",
1388      include_paths: ["third_party/blink/renderer/platform/geometry/layout_unit.h"],
1389      keywords: ["thin", "medium", "thick"],
1390      default_value: "LayoutUnit(3)",
1391      typedom_types: ["Keyword", "Length"],
1392      type_name: "LayoutUnit",
1393      computed_style_custom_functions: ["getter", "setter"],
1394      converter: "ConvertBorderWidth",
1395      valid_for_first_letter: true,
1396    },
1397    {
1398      name: "border-right-color",
1399      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "ColorIncludingFallback"],
1400      interpolable: true,
1401      field_group: "surround",
1402      field_template: "external",
1403      include_paths: ["third_party/blink/renderer/platform/graphics/color.h"],
1404      default_value: "0",
1405      type_name: "Color",
1406      computed_style_custom_functions: ["getter", "setter"],
1407      keywords: ["currentcolor"],
1408      typedom_types: ["Keyword"],
1409      converter: "ConvertStyleColor",
1410      style_builder_template: "color",
1411      affected_by_forced_colors: true,
1412      valid_for_first_letter: true,
1413    },
1414    {
1415      name: "border-right-style",
1416      property_methods: ["CSSValueFromComputedStyleInternal"],
1417      field_group: "surround",
1418      field_template: "keyword",
1419      keywords: [
1420        "none", "hidden", "inset", "groove", "outset", "ridge", "dotted",
1421        "dashed", "solid", "double"
1422      ],
1423      typedom_types: ["Keyword"],
1424      default_value: "none",
1425      type_name: "EBorderStyle",
1426      valid_for_first_letter: true,
1427    },
1428    {
1429      name: "border-right-width",
1430      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1431      interpolable: true,
1432      field_group: "surround",
1433      field_template: "external",
1434      include_paths: ["third_party/blink/renderer/platform/geometry/layout_unit.h"],
1435      keywords: ["thin", "medium", "thick"],
1436      default_value: "LayoutUnit(3)",
1437      typedom_types: ["Keyword", "Length"],
1438      type_name: "LayoutUnit",
1439      computed_style_custom_functions: ["getter", "setter"],
1440      converter: "ConvertBorderWidth",
1441      valid_for_first_letter: true,
1442    },
1443    {
1444      name: "border-top-color",
1445      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "ColorIncludingFallback"],
1446      interpolable: true,
1447      field_group: "surround",
1448      field_template: "external",
1449      include_paths: ["third_party/blink/renderer/platform/graphics/color.h"],
1450      default_value: "0",
1451      type_name: "Color",
1452      computed_style_custom_functions: ["getter", "setter"],
1453      keywords: ["currentcolor"],
1454      typedom_types: ["Keyword"],
1455      converter: "ConvertStyleColor",
1456      style_builder_template: "color",
1457      affected_by_forced_colors: true,
1458      valid_for_first_letter: true,
1459    },
1460    {
1461      name: "border-top-left-radius",
1462      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1463      interpolable: true,
1464      field_group: "surround",
1465      field_template: "external",
1466      include_paths: ["third_party/blink/renderer/platform/geometry/length_size.h"],
1467      default_value: "LengthSize(Length::Fixed(0), Length::Fixed(0))",
1468      type_name: "LengthSize",
1469      converter: "ConvertRadius",
1470      typedom_types: ["Length", "Percentage"],
1471      valid_for_first_letter: true,
1472    },
1473    {
1474      name: "border-top-right-radius",
1475      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1476      interpolable: true,
1477      field_group: "surround",
1478      field_template: "external",
1479      include_paths: ["third_party/blink/renderer/platform/geometry/length_size.h"],
1480      default_value: "LengthSize(Length::Fixed(0), Length::Fixed(0))",
1481      type_name: "LengthSize",
1482      converter: "ConvertRadius",
1483      typedom_types: ["Length", "Percentage"],
1484      valid_for_first_letter: true,
1485    },
1486    {
1487      name: "border-top-style",
1488      property_methods: ["CSSValueFromComputedStyleInternal"],
1489      field_group: "surround",
1490      field_template: "keyword",
1491      keywords: [
1492        "none", "hidden", "inset", "groove", "outset", "ridge", "dotted",
1493        "dashed", "solid", "double"
1494      ],
1495      typedom_types: ["Keyword"],
1496      default_value: "none",
1497      type_name: "EBorderStyle",
1498      valid_for_first_letter: true,
1499    },
1500    {
1501      name: "border-top-width",
1502      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1503      interpolable: true,
1504      field_group: "surround",
1505      field_template: "external",
1506      include_paths: ["third_party/blink/renderer/platform/geometry/layout_unit.h"],
1507      keywords: ["thin", "medium", "thick"],
1508      default_value: "LayoutUnit(3)",
1509      typedom_types: ["Keyword", "Length"],
1510      type_name: "LayoutUnit",
1511      computed_style_custom_functions: ["getter", "setter"],
1512      converter: "ConvertBorderWidth",
1513      valid_for_first_letter: true,
1514    },
1515    {
1516      name: "bottom",
1517      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1518      interpolable: true,
1519      layout_dependent: true,
1520      field_group: "surround",
1521      field_template: "<length>",
1522      keywords: ["auto"],
1523      default_value: "Length()",
1524      typedom_types: ["Keyword", "Length", "Percentage"],
1525      converter: "ConvertLengthOrAuto",
1526    },
1527    {
1528      name: "box-shadow",
1529      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1530      interpolable: true,
1531      field_group: "*",
1532      field_template: "pointer",
1533      include_paths: ["third_party/blink/renderer/core/style/shadow_list.h"],
1534      wrapper_pointer_name: "scoped_refptr",
1535      default_value: "nullptr",
1536      type_name: "ShadowList",
1537      converter: "ConvertShadowList",
1538      keywords: ["none"],
1539      typedom_types: ["Keyword"],
1540      affected_by_forced_colors: true,
1541      valid_for_first_letter: true,
1542    },
1543    {
1544      name: "box-sizing",
1545      property_methods: ["CSSValueFromComputedStyleInternal"],
1546      field_group: "box",
1547      field_template: "keyword",
1548      keywords: ["content-box", "border-box"],
1549      typedom_types: ["Keyword"],
1550      default_value: "content-box",
1551    },
1552    {
1553      name: "break-after",
1554      property_methods: ["CSSValueFromComputedStyleInternal"],
1555      // Storage for this property also covers these legacy properties:
1556      // page-break-after, -webkit-column-break-after
1557      field_template: "keyword",
1558      keywords: [
1559        "auto", "avoid", "avoid-column", "avoid-page", "column", "left", "page",
1560        "recto", "right", "verso"
1561      ],
1562      typedom_types: ["Keyword"],
1563      default_value: "auto",
1564      type_name: "EBreakBetween",
1565    },
1566    {
1567      name: "break-before",
1568      property_methods: ["CSSValueFromComputedStyleInternal"],
1569      // Storage for this property also covers these legacy properties:
1570      // page-break-before, -webkit-column-break-before
1571      field_template: "keyword",
1572      keywords: [
1573        "auto", "avoid", "avoid-column", "avoid-page", "column", "left", "page",
1574        "recto", "right", "verso"
1575      ],
1576      typedom_types: ["Keyword"],
1577      default_value: "auto",
1578      type_name: "EBreakBetween",
1579    },
1580    {
1581      name: "break-inside",
1582      property_methods: ["CSSValueFromComputedStyleInternal"],
1583      // Storage for this property also covers these legacy properties:
1584      // page-break-inside, -webkit-column-break-inside
1585      field_template: "keyword",
1586      keywords: ["auto", "avoid", "avoid-column", "avoid-page"],
1587      typedom_types: ["Keyword"],
1588      default_value: "auto",
1589    },
1590    {
1591      name: "buffered-rendering",
1592      property_methods: ["CSSValueFromComputedStyleInternal"],
1593      svg: true,
1594    },
1595    {
1596      name: "caption-side",
1597      property_methods: ["CSSValueFromComputedStyleInternal"],
1598      independent: true,
1599      inherited: true,
1600      field_template: "keyword",
1601      keywords: ["top", "bottom"],
1602      typedom_types: ["Keyword"],
1603      default_value: "top",
1604    },
1605    {
1606      name: "caret-color",
1607      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "ColorIncludingFallback"],
1608      interpolable: true,
1609      inherited: true,
1610      field_group: "*",
1611      field_template: "external",
1612      include_paths: ["third_party/blink/renderer/platform/graphics/color.h"],
1613      default_value: "Color()",
1614      type_name: "Color",
1615      computed_style_custom_functions: ["getter", "setter"],
1616      style_builder_custom_functions: ["initial", "inherit", "value"],
1617      keywords: ["auto", "currentcolor"],
1618      typedom_types: ["Keyword"],
1619    },
1620    {
1621      name: "clear",
1622      property_methods: ["CSSValueFromComputedStyleInternal"],
1623      field_template: "keyword",
1624      computed_style_custom_functions: ["getter"],
1625      keywords: ["none", "left", "right", "both", "inline-start", "inline-end"],
1626      typedom_types: ["Keyword"],
1627      default_value: "none",
1628    },
1629    {
1630      name: "clip",
1631      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1632      interpolable: true,
1633      field_group: "visual",
1634      field_template: "external",
1635      include_paths: ["third_party/blink/renderer/platform/geometry/length_box.h"],
1636      default_value: "LengthBox()",
1637      type_name: "LengthBox",
1638      computed_style_custom_functions: ["setter"],
1639      style_builder_template: "auto",
1640      converter: "ConvertClip",
1641      keywords: ["auto"],
1642      typedom_types: ["Keyword"],
1643    },
1644    {
1645      name: "clip-path",
1646      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1647      interpolable: true,
1648      field_group: "*",
1649      field_template: "pointer",
1650      include_paths: ["third_party/blink/renderer/core/style/clip_path_operation.h"],
1651      wrapper_pointer_name: "scoped_refptr",
1652      default_value: "nullptr",
1653      type_name: "ClipPathOperation",
1654      converter: "ConvertClipPath",
1655      keywords: ["none"],
1656      typedom_types: ["Keyword"]
1657    },
1658    {
1659      name: "clip-rule",
1660      property_methods: ["CSSValueFromComputedStyleInternal"],
1661      inherited: true,
1662      svg: true,
1663      type_name: "WindRule",
1664      keywords: ["nonzero", "evenodd"],
1665      typedom_types: ["Keyword"]
1666    },
1667    {
1668      name: "color-interpolation",
1669      property_methods: ["CSSValueFromComputedStyleInternal"],
1670      inherited: true,
1671      svg: true,
1672      keywords: ["auto", "srgb", "linearrgb"],
1673      typedom_types: ["Keyword"],
1674    },
1675    {
1676      name: "color-interpolation-filters",
1677      property_methods: ["CSSValueFromComputedStyleInternal"],
1678      inherited: true,
1679      svg: true,
1680      type_name: "EColorInterpolation",
1681    },
1682    {
1683      name: "color-rendering",
1684      property_methods: ["CSSValueFromComputedStyleInternal"],
1685      inherited: true,
1686      svg: true,
1687      keywords: ["auto", "optimizespeed", "optimizequality"],
1688      typedom_types: ["Keyword"],
1689    },
1690    {
1691      name: "color-scheme",
1692      field_group: "*",
1693      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "InitialValue"],
1694      style_builder_custom_functions: ["initial", "inherit", "value"],
1695      inherited: true,
1696      runtime_flag: "CSSColorScheme",
1697      include_paths: ["third_party/blink/public/platform/web_color_scheme.h"],
1698      type_name: "Vector<AtomicString>",
1699      default_value: "Vector<AtomicString, 0>()",
1700      field_template: "external",
1701      priority: "High",
1702    },
1703    {
1704      name: "column-fill",
1705      property_methods: ["CSSValueFromComputedStyleInternal"],
1706      field_group: "*",
1707      field_template: "keyword",
1708      keywords: ["balance", "auto"],
1709      default_value: "balance",
1710      getter: "GetColumnFill",
1711      typedom_types: ["Keyword"]
1712    },
1713    {
1714      name: "contain",
1715      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1716      field_group: "*",
1717      field_size: 4,
1718      field_template: "primitive",
1719      default_value: "kContainsNone",
1720      name_for_methods: "Contain",
1721      type_name: "unsigned",
1722      converter: "ConvertFlags<Containment>",
1723      keywords: ["none", "strict", "content", "size", "layout", "style", "paint"],
1724      typedom_types: ["Keyword"],
1725    },
1726    {
1727      name: "contain-intrinsic-size",
1728      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1729      interpolable: true,
1730      field_group: "box",
1731      field_template: "external",
1732      keywords: ["auto"],
1733      default_value: "LengthSize(Length::Auto(), Length::Auto())",
1734      type_name: "LengthSize",
1735      converter: "ConvertIntrinsicSize",
1736      include_paths: ["third_party/blink/renderer/platform/geometry/length_size.h"],
1737      runtime_flag: "CSSIntrinsicSize"
1738    },
1739    {
1740      name: "content",
1741      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1742      field_group: "*",
1743      field_template: "external",
1744      include_paths: ["third_party/blink/renderer/core/style/content_data.h"],
1745      wrapper_pointer_name: "Persistent",
1746      default_value: "nullptr",
1747      separator: ",",
1748      type_name: "ContentData",
1749      computed_style_custom_functions: ["getter", "setter"],
1750      style_builder_custom_functions: ["initial", "inherit", "value"],
1751      valid_for_marker: true,
1752    },
1753    {
1754      name: "counter-increment",
1755      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1756      style_builder_template: "counter",
1757      style_builder_template_args: {
1758        action: "Increment",
1759      },
1760      keywords: ["none"],
1761      typedom_types: ["Keyword"],
1762    },
1763    {
1764      name: "counter-reset",
1765      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1766      style_builder_template: "counter",
1767      style_builder_template_args: {
1768        action: "Reset",
1769      },
1770      keywords: ["none"],
1771      typedom_types: ["Keyword"],
1772    },
1773    {
1774      name: "cursor",
1775      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1776      inherited: true,
1777      field_template: "keyword",
1778      keywords: [
1779        "auto", "default", "none", "context-menu", "help", "pointer",
1780        "progress", "wait", "cell", "crosshair", "text", "vertical-text",
1781        "alias", "copy", "move", "no-drop", "not-allowed", "e-resize",
1782        "n-resize", "ne-resize", "nw-resize", "s-resize", "se-resize",
1783        "sw-resize", "w-resize", "ew-resize", "ns-resize", "nesw-resize",
1784        "nwse-resize", "col-resize", "row-resize", "all-scroll", "zoom-in",
1785        "zoom-out", "grab", "grabbing"
1786      ],
1787      default_value: "auto",
1788      style_builder_custom_functions: ["initial", "inherit", "value"],
1789      typedom_types: ["Keyword"]
1790    },
1791    {
1792      name: "cx",
1793      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1794      interpolable: true,
1795      svg: true,
1796      typedom_types: ["Length", "Percentage"],
1797      converter: "ConvertLength",
1798    },
1799    {
1800      name: "cy",
1801      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1802      interpolable: true,
1803      svg: true,
1804      typedom_types: ["Length", "Percentage"],
1805      converter: "ConvertLength",
1806    },
1807    {
1808      name: "d",
1809      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1810      interpolable: true,
1811      svg: true,
1812      converter: "ConvertPathOrNone",
1813      keywords: ["none"],
1814      typedom_types: ["Keyword"],
1815    },
1816    {
1817      name: "display",
1818      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1819      keywords: [
1820        "inline", "block", "list-item", "inline-block", "table", "inline-table",
1821        "table-row-group", "table-header-group", "table-footer-group",
1822        "table-row", "table-column-group", "table-column", "table-cell",
1823        "table-caption", "-webkit-box", "-webkit-inline-box", "flex",
1824        "inline-flex", "grid", "inline-grid", "contents", "flow-root", "none"
1825      ],
1826      typedom_types: ["Keyword"],
1827      style_builder_custom_functions: ["initial", "inherit", "value"],
1828    },
1829    {
1830      name: "dominant-baseline",
1831      property_methods: ["CSSValueFromComputedStyleInternal"],
1832      inherited: true,
1833      svg: true,
1834      keywords: ["auto", "alphabetic", "ideographic", "middle", "central", "mathematical", "hanging"],
1835      typedom_types: ["Keyword"]
1836    },
1837    {
1838      name: "empty-cells",
1839      property_methods: ["CSSValueFromComputedStyleInternal"],
1840      independent: true,
1841      inherited: true,
1842      field_template: "keyword",
1843      keywords: ["show", "hide"],
1844      typedom_types: ["Keyword"],
1845      default_value: "show",
1846    },
1847    {
1848      name: "fill",
1849      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1850      interpolable: true,
1851      inherited: true,
1852      svg: true,
1853      initial: "InitialFillPaint",
1854      setter: "SetFillPaint",
1855      getter: "FillPaint",
1856      converter: "ConvertSVGPaint",
1857      affected_by_forced_colors: true,
1858    },
1859    {
1860      name: "fill-opacity",
1861      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1862      interpolable: true,
1863      inherited: true,
1864      svg: true,
1865      converter: "ConvertAlpha",
1866      typedom_types: ["Number"],
1867    },
1868    {
1869      name: "fill-rule",
1870      property_methods: ["CSSValueFromComputedStyleInternal"],
1871      inherited: true,
1872      svg: true,
1873      type_name: "WindRule",
1874      keywords: ["nonzero", "evenodd"],
1875      typedom_types: ["Keyword"]
1876    },
1877    {
1878      name: "filter",
1879      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1880      interpolable: true,
1881      compositable: true,
1882      field_group: "*",
1883      field_template: "external",
1884      include_paths: ["third_party/blink/renderer/core/style/style_filter_data.h"],
1885      wrapper_pointer_name: "Persistent",
1886      default_value: "MakeGarbageCollected<StyleFilterData>()",
1887      type_name: "StyleFilterData",
1888      computed_style_custom_functions: ["initial", "getter", "setter"],
1889      converter: "ConvertFilterOperations",
1890      keywords: ["none"],
1891      typedom_types: ["Keyword"],
1892    },
1893    {
1894      name: "flex-basis",
1895      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1896      interpolable: true,
1897      field_group: "*",
1898      field_template: "<length>",
1899      default_value: "Length::Auto()",
1900      converter: "ConvertLengthOrAuto",
1901      typedom_types: ["Keyword", "Length", "Percentage"],
1902      keywords: ["auto"]
1903    },
1904    {
1905      name: "flex-direction",
1906      property_methods: ["CSSValueFromComputedStyleInternal"],
1907      field_group: "*",
1908      field_template: "keyword",
1909      typedom_types: ["Keyword"],
1910      keywords: ["row", "row-reverse", "column", "column-reverse"],
1911      default_value: "row",
1912    },
1913    {
1914      name: "flex-grow",
1915      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1916      interpolable: true,
1917      field_group: "*",
1918      field_template: "primitive",
1919      default_value: "0.0f",
1920      type_name: "float",
1921      typedom_types: ["Number"],
1922    },
1923    {
1924      name: "flex-shrink",
1925      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1926      interpolable: true,
1927      field_group: "*",
1928      field_template: "primitive",
1929      default_value: "1.0f",
1930      type_name: "float",
1931      typedom_types: ["Number"],
1932    },
1933    {
1934      name: "flex-wrap",
1935      property_methods: ["CSSValueFromComputedStyleInternal"],
1936      field_group: "*",
1937      field_template: "keyword",
1938      typedom_types: ["Keyword"],
1939      keywords: ["nowrap", "wrap", "wrap-reverse"],
1940      default_value: "nowrap",
1941    },
1942    {
1943      name: "float",
1944      property_methods: ["CSSValueFromComputedStyleInternal"],
1945      field_template: "keyword",
1946      computed_style_custom_functions: ["getter"],
1947      keywords: ["none", "left", "right", "inline-start", "inline-end"],
1948      typedom_types: ["Keyword"],
1949      default_value: "none",
1950      name_for_methods: "Floating",
1951      type_name: "EFloat",
1952      valid_for_first_letter: true,
1953    },
1954    {
1955      name: "flood-color",
1956      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "ColorIncludingFallback"],
1957      interpolable: true,
1958      svg: true,
1959      converter: "ConvertStyleColor",
1960      keywords: ["currentcolor"],
1961      typedom_types: ["Keyword"],
1962    },
1963    {
1964      name: "flood-opacity",
1965      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1966      interpolable: true,
1967      svg: true,
1968      converter: "ConvertAlpha",
1969      typedom_types: ["Number"]
1970    },
1971    {
1972      name: "grid-auto-columns",
1973      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1974      field_group: "*",
1975      field_template: "external",
1976      include_paths: ["third_party/blink/renderer/platform/wtf/vector.h",
1977                      "third_party/blink/renderer/core/style/grid_track_size.h"],
1978      default_value: "Vector<GridTrackSize>(1, GridTrackSize(Length::Auto()))",
1979      type_name: "Vector<GridTrackSize>",
1980      converter: "ConvertGridTrackSizeList",
1981      keywords: ["auto", "min-content", "max-content"],
1982      typedom_types: ["Keyword", "Length", "Percentage", "Flex"],
1983      separator: " "
1984    },
1985    {
1986      name: "grid-auto-flow",
1987      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
1988      field_group: "*",
1989      field_size: 4, // FIXME: Make this use "kGridAutoFlowBits".
1990      field_template: "primitive",
1991      default_value: "kAutoFlowRow",
1992      type_name: "GridAutoFlow",
1993      computed_style_custom_functions: ["getter"],
1994      converter: "ConvertGridAutoFlow",
1995      keywords: ["row", "column"],
1996      typedom_types: ["Keyword"]
1997    },
1998    {
1999      name: "grid-auto-rows",
2000      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2001      field_group: "*",
2002      field_template: "external",
2003      include_paths: ["third_party/blink/renderer/platform/wtf/vector.h",
2004                      "third_party/blink/renderer/core/style/grid_track_size.h"],
2005      default_value: "Vector<GridTrackSize>(1, GridTrackSize(Length::Auto()))",
2006      type_name: "Vector<GridTrackSize>",
2007      converter: "ConvertGridTrackSizeList",
2008      keywords: ["auto", "min-content", "max-content"],
2009      typedom_types: ["Keyword", "Length", "Percentage", "Flex"],
2010      separator: " "
2011    },
2012    {
2013      name: "grid-column-end",
2014      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2015      field_group: "*",
2016      field_template: "external",
2017      include_paths: ["third_party/blink/renderer/core/style/grid_position.h"],
2018      default_value: "GridPosition()",
2019      type_name: "GridPosition",
2020      keywords: ["auto"],
2021      typedom_types: ["Keyword"],
2022      converter: "ConvertGridPosition",
2023    },
2024    {
2025      name: "grid-column-start",
2026      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2027      field_group: "*",
2028      field_template: "external",
2029      include_paths: ["third_party/blink/renderer/core/style/grid_position.h"],
2030      default_value: "GridPosition()",
2031      type_name: "GridPosition",
2032      keywords: ["auto"],
2033      typedom_types: ["Keyword"],
2034      converter: "ConvertGridPosition",
2035    },
2036    {
2037      name: "grid-row-end",
2038      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2039      field_group: "*",
2040      field_template: "external",
2041      include_paths: ["third_party/blink/renderer/core/style/grid_position.h"],
2042      default_value: "GridPosition()",
2043      type_name: "GridPosition",
2044      keywords: ["auto"],
2045      typedom_types: ["Keyword"],
2046      converter: "ConvertGridPosition",
2047    },
2048    {
2049      name: "grid-row-start",
2050      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2051      field_group: "*",
2052      field_template: "external",
2053      include_paths: ["third_party/blink/renderer/core/style/grid_position.h"],
2054      default_value: "GridPosition()",
2055      type_name: "GridPosition",
2056      keywords: ["auto"],
2057      typedom_types: ["Keyword"],
2058      converter: "ConvertGridPosition",
2059    },
2060    {
2061      name: "grid-template-areas",
2062      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2063      style_builder_custom_functions: ["initial", "inherit", "value"],
2064      keywords: ["none"],
2065      typedom_types: ["Keyword"]
2066    },
2067    {
2068      name: "grid-template-columns",
2069      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2070      layout_dependent: true,
2071      field_group: "*",
2072      field_template: "external",
2073      include_paths: ["third_party/blink/renderer/platform/wtf/vector.h",
2074                      "third_party/blink/renderer/core/style/grid_track_size.h"],
2075      default_value: "Vector<GridTrackSize>()",
2076      type_name: "Vector<GridTrackSize>",
2077      style_builder_template: "grid",
2078      style_builder_template_args: {
2079        type: "Column",
2080      },
2081      keywords: ["none"],
2082      typedom_types: ["Keyword"]
2083    },
2084    {
2085      name: "grid-template-rows",
2086      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2087      layout_dependent: true,
2088      field_group: "*",
2089      field_template: "external",
2090      include_paths: ["third_party/blink/renderer/platform/wtf/vector.h",
2091                      "third_party/blink/renderer/core/style/grid_track_size.h"],
2092      default_value: "Vector<GridTrackSize>()",
2093      type_name: "Vector<GridTrackSize>",
2094      style_builder_template: "grid",
2095      style_builder_template_args: {
2096        type: "Row",
2097      },
2098      keywords: ["none"],
2099      typedom_types: ["Keyword"]
2100    },
2101    {
2102      name: "height",
2103      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2104      is_descriptor: true,
2105      interpolable: true,
2106      layout_dependent: true,
2107      field_group: "box",
2108      field_template: "<length>",
2109      keywords: ["auto", "fit-content", "min-content", "max-content"],
2110      default_value: "Length()",
2111      typedom_types: ["Keyword", "Length", "Percentage"],
2112      converter: "ConvertLengthSizing",
2113    },
2114    {
2115      name: "hyphens",
2116      property_methods: ["CSSValueFromComputedStyleInternal"],
2117      inherited: true,
2118      field_group: "*",
2119      field_template: "keyword",
2120      keywords: ["none", "manual", "auto"],
2121      default_value: "manual",
2122      type_name: "Hyphens",
2123      typedom_types: ["Keyword"]
2124    },
2125    {
2126      name: "image-rendering",
2127      property_methods: ["CSSValueFromComputedStyleInternal"],
2128      inherited: true,
2129      field_group: "*",
2130      field_template: "keyword",
2131      keywords: [
2132        "auto", "optimizespeed", "optimizequality",
2133        "-webkit-optimize-contrast", "pixelated"
2134      ],
2135      typedom_types: ["Keyword"],
2136      default_value: "auto",
2137    },
2138    {
2139      name: "image-orientation",
2140      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2141      inherited: true,
2142      runtime_flag: "ImageOrientation",
2143      field_group: "*",
2144      field_template: "primitive",
2145      default_value: "true",
2146      name_for_methods: "RespectImageOrientation",
2147      type_name: "bool",
2148      converter: "ConvertImageOrientation",
2149    },
2150    {
2151      name: "isolation",
2152      property_methods: ["CSSValueFromComputedStyleInternal"],
2153      field_group: "*",
2154      field_template: "keyword",
2155      keywords: ["auto", "isolate"],
2156      typedom_types: ["Keyword"],
2157      default_value: "auto",
2158    },
2159    {
2160      name: "justify-content",
2161      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2162      field_group: "*",
2163      field_template: "external",
2164      include_paths: ["third_party/blink/renderer/core/style/style_content_alignment_data.h"],
2165      default_value: "StyleContentAlignmentData(ContentPosition::kNormal, ContentDistributionType::kDefault, OverflowAlignment::kDefault)",
2166      type_name: "StyleContentAlignmentData",
2167      converter: "ConvertContentAlignmentData",
2168    },
2169    {
2170      name: "justify-items",
2171      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2172      field_group: "*",
2173      field_template: "external",
2174      include_paths: ["third_party/blink/renderer/core/style/style_self_alignment_data.h"],
2175      default_value: "StyleSelfAlignmentData(ItemPosition::kLegacy, OverflowAlignment::kDefault)",
2176      type_name: "StyleSelfAlignmentData",
2177      converter: "ConvertSelfOrDefaultAlignmentData",
2178    },
2179    {
2180      name: "justify-self",
2181      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2182      field_group: "*",
2183      field_template: "external",
2184      include_paths: ["third_party/blink/renderer/core/style/style_self_alignment_data.h"],
2185      default_value: "StyleSelfAlignmentData(ItemPosition::kAuto, OverflowAlignment::kDefault)",
2186      type_name: "StyleSelfAlignmentData",
2187      converter: "ConvertSelfOrDefaultAlignmentData",
2188    },
2189    {
2190      name: "left",
2191      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2192      interpolable: true,
2193      layout_dependent: true,
2194      field_group: "surround",
2195      field_template: "<length>",
2196      keywords: ["auto"],
2197      default_value: "Length()",
2198      typedom_types: ["Keyword", "Length", "Percentage"],
2199      converter: "ConvertLengthOrAuto",
2200    },
2201    {
2202      name: "letter-spacing",
2203      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2204      interpolable: true,
2205      inherited: true,
2206      converter: "ConvertSpacing",
2207      keywords: ["normal"],
2208      typedom_types: ["Keyword", "Length"],
2209      valid_for_first_letter: true,
2210    },
2211    {
2212      name: "lighting-color",
2213      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "ColorIncludingFallback"],
2214      interpolable: true,
2215      svg: true,
2216      converter: "ConvertStyleColor",
2217      keywords: ["currentcolor"],
2218      typedom_types: ["Keyword"],
2219    },
2220    {
2221      name: "line-height",
2222      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2223      interpolable: true,
2224      inherited: true,
2225      field_group: "inherited",
2226      field_template: "<length>",
2227      default_value: "Length::Percent(-100.0)",
2228      getter: "SpecifiedLineHeight",
2229      computed_style_custom_functions: ["getter"],
2230      converter: "ConvertLineHeight",
2231      keywords: ["normal"],
2232      typedom_types: ["Keyword", "Length", "Number", "Percentage"],
2233      valid_for_first_letter: true,
2234      valid_for_cue: true,
2235    },
2236    {
2237      name: "line-height-step",
2238      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2239      inherited: true,
2240      runtime_flag: "CSSSnapSize",
2241      field_group: "*",
2242      field_template: "primitive",
2243      default_value: "0",
2244      type_name: "uint8_t",
2245      converter: "ConvertComputedLength<uint8_t>",
2246      typedom_types: ["Length"],
2247    },
2248    {
2249      name: "list-style-image",
2250      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2251      interpolable: true,
2252      inherited: true,
2253      field_group: "*",
2254      field_template: "external",
2255      include_paths: ["third_party/blink/renderer/core/style/style_image.h"],
2256      wrapper_pointer_name: "Persistent",
2257      default_value: "nullptr",
2258      typedom_types: ["Keyword", "Image"],
2259      type_name: "StyleImage",
2260      computed_style_custom_functions: ["getter", "setter"],
2261      style_builder_custom_functions: ["value"],
2262      keywords: ["none"]
2263    },
2264    {
2265      name: "list-style-position",
2266      property_methods: ["CSSValueFromComputedStyleInternal"],
2267      independent: true,
2268      inherited: true,
2269      field_template: "keyword",
2270      keywords: ["outside", "inside"],
2271      typedom_types: ["Keyword"],
2272      default_value: "outside",
2273    },
2274    {
2275      name: "list-style-type",
2276      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2277      inherited: true,
2278      keywords: [
2279        "disc", "circle", "square", "decimal", "decimal-leading-zero",
2280        "arabic-indic", "bengali", "cambodian", "khmer", "devanagari",
2281        "gujarati", "gurmukhi", "kannada", "lao", "malayalam", "mongolian",
2282        "myanmar", "oriya", "persian", "urdu", "telugu", "tibetan", "thai",
2283        "lower-roman", "upper-roman", "lower-greek", "lower-alpha",
2284        "lower-latin", "upper-alpha", "upper-latin", "cjk-earthly-branch",
2285        "cjk-heavenly-stem", "ethiopic-halehame", "ethiopic-halehame-am",
2286        "ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et", "hangul",
2287        "hangul-consonant", "korean-hangul-formal", "korean-hanja-formal",
2288        "korean-hanja-informal", "hebrew", "armenian", "lower-armenian",
2289        "upper-armenian", "georgian", "cjk-ideographic", "simp-chinese-formal",
2290        "simp-chinese-informal", "trad-chinese-formal", "trad-chinese-informal",
2291        "hiragana", "katakana", "hiragana-iroha", "katakana-iroha", "none"
2292      ],
2293      style_builder_custom_functions: ["initial", "inherit", "value"],
2294    },
2295    {
2296      name: "margin-bottom",
2297      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2298      interpolable: true,
2299      layout_dependent: true,
2300      field_group: "surround",
2301      field_template: "<length>",
2302      default_value: "Length::Fixed()",
2303      converter: "ConvertQuirkyLength",
2304      computed_style_custom_functions: ["setter"],
2305      keywords: ["auto"],
2306      typedom_types: ["Keyword", "Length", "Percentage"],
2307      valid_for_first_letter: true,
2308    },
2309    {
2310      name: "margin-left",
2311      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2312      interpolable: true,
2313      layout_dependent: true,
2314      field_group: "surround",
2315      field_template: "<length>",
2316      default_value: "Length::Fixed()",
2317      converter: "ConvertQuirkyLength",
2318      computed_style_custom_functions: ["setter"],
2319      keywords: ["auto"],
2320      typedom_types: ["Keyword", "Length", "Percentage"],
2321      valid_for_first_letter: true,
2322    },
2323    {
2324      name: "margin-right",
2325      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2326      interpolable: true,
2327      layout_dependent: true,
2328      field_group: "surround",
2329      field_template: "<length>",
2330      default_value: "Length::Fixed()",
2331      converter: "ConvertQuirkyLength",
2332      computed_style_custom_functions: ["setter"],
2333      keywords: ["auto"],
2334      typedom_types: ["Keyword", "Length", "Percentage"],
2335      valid_for_first_letter: true,
2336    },
2337    {
2338      name: "margin-top",
2339      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2340      interpolable: true,
2341      layout_dependent: true,
2342      field_group: "surround",
2343      field_template: "<length>",
2344      default_value: "Length::Fixed()",
2345      converter: "ConvertQuirkyLength",
2346      computed_style_custom_functions: ["setter"],
2347      keywords: ["auto"],
2348      typedom_types: ["Keyword", "Length", "Percentage"],
2349      valid_for_first_letter: true,
2350    },
2351    {
2352      name: "marker-end",
2353      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2354      inherited: true,
2355      svg: true,
2356      name_for_methods: "MarkerEndResource",
2357      converter: "ConvertElementReference",
2358      keywords: ["none"],
2359      typedom_types: ["Keyword"]
2360    },
2361    {
2362      name: "marker-mid",
2363      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2364      inherited: true,
2365      svg: true,
2366      name_for_methods: "MarkerMidResource",
2367      converter: "ConvertElementReference",
2368      keywords: ["none"],
2369      typedom_types: ["Keyword"]
2370    },
2371    {
2372      name: "marker-start",
2373      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2374      inherited: true,
2375      svg: true,
2376      name_for_methods: "MarkerStartResource",
2377      converter: "ConvertElementReference",
2378      keywords: ["none"],
2379      typedom_types: ["Keyword"]
2380    },
2381    {
2382      name: "mask",
2383      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2384      svg: true,
2385      name_for_methods: "MaskerResource",
2386      converter: "ConvertElementReference",
2387    },
2388    {
2389      name: "mask-source-type",
2390      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2391      runtime_flag: "CSSMaskSourceType",
2392      style_builder_template: "mask_layer",
2393      style_builder_template_args: {
2394        fill_type: "MaskSourceType",
2395      },
2396    },
2397    {
2398      name: "mask-type",
2399      property_methods: ["CSSValueFromComputedStyleInternal"],
2400      svg: true,
2401      keywords: ["luminance", "alpha"],
2402      typedom_types: ["Keyword"]
2403    },
2404    // TODO(rbuis): should be moved to high priority later.
2405    {
2406      name: "math-style",
2407      property_methods: ["CSSValueFromComputedStyleInternal"],
2408      field_template: "keyword",
2409      inherited: true,
2410      keywords: ["inline", "display"],
2411      typedom_types: ["Keyword"],
2412      default_value: "inline",
2413      runtime_flag: "CSSMathStyle"
2414    },
2415    {
2416      name: "max-height",
2417      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2418      is_descriptor: true,
2419      interpolable: true,
2420      field_group: "box",
2421      field_template: "<length>",
2422      default_value: "Length::None()",
2423      converter: "ConvertLengthMaxSizing",
2424      keywords: ["none"],
2425      typedom_types: ["Keyword", "Length", "Percentage"]
2426    },
2427    {
2428      name: "max-width",
2429      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2430      is_descriptor: true,
2431      interpolable: true,
2432      field_group: "box",
2433      field_template: "<length>",
2434      default_value: "Length::None()",
2435      converter: "ConvertLengthMaxSizing",
2436      keywords: ["none"],
2437      typedom_types: ["Keyword", "Length", "Percentage"]
2438    },
2439    {
2440      name: "min-height",
2441      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2442      is_descriptor: true,
2443      interpolable: true,
2444      field_group: "box",
2445      field_template: "<length>",
2446      default_value: "Length()",
2447      converter: "ConvertLengthSizing",
2448      typedom_types: ["Length", "Percentage"]
2449    },
2450    {
2451      name: "min-width",
2452      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2453      is_descriptor: true,
2454      interpolable: true,
2455      field_group: "box",
2456      field_template: "<length>",
2457      default_value: "Length()",
2458      converter: "ConvertLengthSizing",
2459      typedom_types: ["Length", "Percentage"]
2460    },
2461    {
2462      name: "mix-blend-mode",
2463      property_methods: ["CSSValueFromComputedStyleInternal"],
2464      field_group: "*",
2465      field_template: "keyword",
2466      include_paths: ["third_party/blink/renderer/platform/graphics/graphics_types.h"],
2467      keywords: [
2468        "normal", "multiply", "screen", "overlay", "darken", "lighten",
2469        "color-dodge", "color-burn", "hard-light", "soft-light", "difference",
2470        "exclusion", "hue", "saturation", "color", "luminosity"
2471      ],
2472      typedom_types: ["Keyword"],
2473      default_value: "normal",
2474      name_for_methods: "BlendMode",
2475      type_name: "BlendMode",
2476    },
2477    {
2478      name: "object-fit",
2479      property_methods: ["CSSValueFromComputedStyleInternal"],
2480      field_group: "*",
2481      field_template: "keyword",
2482      keywords: ["fill", "contain", "cover", "none", "scale-down"],
2483      typedom_types: ["Keyword"],
2484      default_value: "fill",
2485      getter: "GetObjectFit",
2486    },
2487    {
2488      name: "object-position",
2489      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2490      interpolable: true,
2491      field_group: "*",
2492      field_template: "external",
2493      include_paths: ["third_party/blink/renderer/platform/geometry/length_point.h"],
2494      default_value: "LengthPoint(Length::Percent(50.0), Length::Percent(50.0))",
2495      type_name: "LengthPoint",
2496      converter: "ConvertPosition",
2497      typedom_types: ["Keyword", "Position"],
2498    },
2499    {
2500      name: "offset-anchor",
2501      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2502      interpolable: true,
2503      runtime_flag: "CSSOffsetPositionAnchor",
2504      field_group: "*",
2505      field_template: "external",
2506      include_paths: ["third_party/blink/renderer/platform/geometry/length_point.h"],
2507      default_value: "LengthPoint(Length::Auto(), Length::Auto())",
2508      type_name: "LengthPoint",
2509      converter: "ConvertPositionOrAuto",
2510      keywords: ["auto"],
2511      typedom_types: ["Keyword", "Position"]
2512    },
2513    {
2514      name: "offset-distance",
2515      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2516      interpolable: true,
2517      field_group: "*",
2518      field_template: "<length>",
2519      default_value: "Length::Fixed(0)",
2520      converter: "ConvertLength",
2521      typedom_types: ["Length", "Percentage"]
2522    },
2523    {
2524      name: "offset-path",
2525      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2526      interpolable: true,
2527      field_group: "*",
2528      field_template: "pointer",
2529      include_paths: ["third_party/blink/renderer/core/style/basic_shapes.h"],
2530      wrapper_pointer_name: "scoped_refptr",
2531      default_value: "nullptr",
2532      type_name: "BasicShape",
2533      converter: "ConvertOffsetPath",
2534      keywords: ["none"],
2535      typedom_types: ["Keyword"]
2536    },
2537    {
2538      name: "offset-position",
2539      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2540      interpolable: true,
2541      runtime_flag: "CSSOffsetPositionAnchor",
2542      field_group: "*",
2543      field_template: "external",
2544      include_paths: ["third_party/blink/renderer/platform/geometry/length_point.h"],
2545      default_value: "LengthPoint(Length::Auto(), Length::Auto())",
2546      type_name: "LengthPoint",
2547      converter: "ConvertPositionOrAuto",
2548      keywords: ["auto"],
2549      typedom_types: ["Keyword", "Position"]
2550    },
2551    {
2552      name: "offset-rotate",
2553      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2554      interpolable: true,
2555      field_group: "*",
2556      field_template: "external",
2557      include_paths: ["third_party/blink/renderer/core/style/style_offset_rotation.h"],
2558      default_value: "StyleOffsetRotation(0, OffsetRotationType::kAuto)",
2559      type_name: "StyleOffsetRotation",
2560      converter: "ConvertOffsetRotate",
2561      keywords: ["auto", "reverse"],
2562      typedom_types: ["Keyword", "Angle"]
2563    },
2564    {
2565      name: "opacity",
2566      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2567      interpolable: true,
2568      compositable: true,
2569      field_group: "*",
2570      field_template: "primitive",
2571      default_value: "1.0",
2572      type_name: "float",
2573      computed_style_custom_functions: ["setter"],
2574      typedom_types: ["Number"],
2575      valid_for_first_letter: true,
2576      valid_for_cue: true,
2577    },
2578    {
2579      name: "order",
2580      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2581      interpolable: true,
2582      field_group: "*",
2583      field_template: "primitive",
2584      default_value: "0",
2585      type_name: "int",
2586      computed_style_custom_functions: ["setter"],
2587      typedom_types: ["Number"]
2588    },
2589    {
2590      // This property is used for testing with origin trial intergration only.
2591      // It should never be web-exposed.
2592      name: "origin-trial-test-property",
2593      property_methods: ["CSSValueFromComputedStyleInternal"],
2594      field_template: "keyword",
2595      default_value: "normal",
2596      keywords: ["normal", "none"],
2597      typedom_types: ["Keyword"],
2598      runtime_flag: "OriginTrialsSampleAPI"
2599    },
2600    {
2601      name: "orphans",
2602      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2603      interpolable: true,
2604      inherited: true,
2605      field_group: "*",
2606      field_template: "primitive",
2607      computed_style_custom_functions: ["setter"],
2608      default_value: "2",
2609      type_name: "short",
2610      typedom_types: ["Number"]
2611    },
2612    {
2613      name: "outline-color",
2614      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "ColorIncludingFallback"],
2615      interpolable: true,
2616      field_group: "*",
2617      field_template: "external",
2618      include_paths: ["third_party/blink/renderer/platform/graphics/color.h"],
2619      default_value: "0",
2620      type_name: "Color",
2621      computed_style_custom_functions: ["getter", "setter"],
2622      keywords: ["currentcolor"],
2623      typedom_types: ["Keyword"],
2624      converter: "ConvertStyleColor",
2625      style_builder_template: "color",
2626      affected_by_forced_colors: true,
2627      valid_for_cue: true,
2628    },
2629    {
2630      name: "outline-offset",
2631      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2632      interpolable: true,
2633      field_group: "*",
2634      field_template: "primitive",
2635      default_value: "0",
2636      type_name: "int",
2637      computed_style_custom_functions: ["getter"],
2638      converter: "ConvertComputedLength<int>",
2639      typedom_types: ["Length"],
2640      valid_for_cue: true,
2641    },
2642    {
2643      name: "outline-style",
2644      property_methods: ["CSSValueFromComputedStyleInternal"],
2645      field_group: "*",
2646      field_template: "keyword",
2647      keywords: [
2648        "none", "hidden", "inset", "groove", "outset", "ridge", "dotted",
2649        "dashed", "solid", "double"
2650      ],
2651      typedom_types: ["Keyword"],
2652      default_value: "none",
2653      type_name: "EBorderStyle",
2654      style_builder_custom_functions: ["initial", "inherit", "value"],
2655      valid_for_cue: true,
2656    },
2657    {
2658      name: "outline-width",
2659      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2660      interpolable: true,
2661      field_group: "*",
2662      field_template: "external",
2663      include_paths: ["third_party/blink/renderer/platform/geometry/layout_unit.h"],
2664      default_value: "LayoutUnit(3)",
2665      type_name: "LayoutUnit",
2666      computed_style_custom_functions: ["initial", "getter", "setter"],
2667      converter: "ConvertLineWidth<unsigned short>",
2668      keywords: ["thin", "medium", "thick"],
2669      typedom_types: ["Keyword", "Length"],
2670      valid_for_cue: true,
2671    },
2672    {
2673      name: "overflow-anchor",
2674      property_methods: ["CSSValueFromComputedStyleInternal"],
2675      inherited: false,
2676      field_template: "keyword",
2677      keywords: [
2678        "visible", "none", "auto"
2679      ],
2680      typedom_types: ["Keyword"],
2681      default_value: "auto",
2682    },
2683    {
2684      name: "overflow-wrap",
2685      property_methods: ["CSSValueFromComputedStyleInternal"],
2686      inherited: true,
2687      field_group: "*",
2688      field_template: "keyword",
2689      keywords: ["normal", "break-word", "anywhere"],
2690      default_value: "normal",
2691      typedom_types: ["Keyword"]
2692    },
2693    {
2694      name: "overflow-inline",
2695      direction_aware_options: {
2696        resolver: "inline",
2697        physical_group: "overflow",
2698      },
2699      runtime_flag: "CSSLogicalOverflow",
2700    },
2701    {
2702      name: "overflow-block",
2703      direction_aware_options: {
2704        resolver: "block",
2705        physical_group: "overflow",
2706      },
2707      runtime_flag: "CSSLogicalOverflow",
2708    },
2709    {
2710      name: "overflow-x",
2711      property_methods: ["CSSValueFromComputedStyleInternal"],
2712      field_template: "keyword",
2713      keywords: [
2714        "visible", "hidden", "scroll", "auto", "overlay"
2715      ],
2716      typedom_types: ["Keyword"],
2717      default_value: "visible",
2718      type_name: "EOverflow",
2719    },
2720    {
2721      name: "overflow-y",
2722      property_methods: ["CSSValueFromComputedStyleInternal"],
2723      field_template: "keyword",
2724      keywords: [
2725        "visible", "hidden", "scroll", "auto", "overlay",
2726      ],
2727      typedom_types: ["Keyword"],
2728      default_value: "visible",
2729      type_name: "EOverflow",
2730    },
2731    {
2732      name: "overscroll-behavior-inline",
2733      direction_aware_options: {
2734        resolver: "inline",
2735        physical_group: "overscroll-behavior",
2736      },
2737    },
2738    {
2739      name: "overscroll-behavior-block",
2740      direction_aware_options: {
2741        resolver: "block",
2742        physical_group: "overscroll-behavior",
2743      },
2744    },
2745    {
2746      name: "overscroll-behavior-x",
2747      property_methods: ["CSSValueFromComputedStyleInternal"],
2748      field_template: "keyword",
2749      keywords: ["auto", "contain", "none"],
2750      default_value: "auto",
2751      type_name: "EOverscrollBehavior",
2752      typedom_types: ["Keyword"]
2753    },
2754    {
2755      name: "overscroll-behavior-y",
2756      property_methods: ["CSSValueFromComputedStyleInternal"],
2757      field_template: "keyword",
2758      keywords: ["auto", "contain", "none"],
2759      default_value: "auto",
2760      type_name: "EOverscrollBehavior",
2761      typedom_types: ["Keyword"]
2762    },
2763    {
2764      name: "padding-bottom",
2765      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2766      interpolable: true,
2767      layout_dependent: true,
2768      field_group: "surround",
2769      field_template: "<length>",
2770      default_value: "Length::Fixed()",
2771      converter: "ConvertLength",
2772      computed_style_custom_functions: ["setter"],
2773      typedom_types: ["Keyword", "Length", "Percentage"],
2774      valid_for_first_letter: true,
2775    },
2776    {
2777      name: "padding-left",
2778      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2779      interpolable: true,
2780      layout_dependent: true,
2781      field_group: "surround",
2782      field_template: "<length>",
2783      default_value: "Length::Fixed()",
2784      converter: "ConvertLength",
2785      computed_style_custom_functions: ["setter"],
2786      typedom_types: ["Keyword", "Length", "Percentage"],
2787      valid_for_first_letter: true,
2788    },
2789    {
2790      name: "padding-right",
2791      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2792      interpolable: true,
2793      layout_dependent: true,
2794      field_group: "surround",
2795      field_template: "<length>",
2796      default_value: "Length::Fixed()",
2797      converter: "ConvertLength",
2798      computed_style_custom_functions: ["setter"],
2799      typedom_types: ["Keyword", "Length", "Percentage"],
2800      valid_for_first_letter: true,
2801    },
2802    {
2803      name: "padding-top",
2804      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2805      interpolable: true,
2806      layout_dependent: true,
2807      field_group: "surround",
2808      field_template: "<length>",
2809      default_value: "Length::Fixed()",
2810      converter: "ConvertLength",
2811      computed_style_custom_functions: ["setter"],
2812      typedom_types: ["Keyword", "Length", "Percentage"],
2813      valid_for_first_letter: true,
2814    },
2815    {
2816      name: "page",
2817      field_group: "*",
2818      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2819      converter: "ConvertPage",
2820      type_name: "AtomicString",
2821      default_value: "AtomicString()",
2822      field_template: "external",
2823      keywords: ["auto"],
2824      typedom_types: ["Keyword"],
2825      runtime_flag: "NamedPages"
2826    },
2827    {
2828      name: "paint-order",
2829      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2830      inherited: true,
2831      svg: true,
2832      converter: "ConvertPaintOrder",
2833      keywords: ["normal", "fill", "stroke", "markers"],
2834      typedom_types: ["Keyword"]
2835    },
2836    {
2837      name: "perspective",
2838      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2839      interpolable: true,
2840      field_group: "*",
2841      field_template: "primitive",
2842      default_value: "0.0",
2843      type_name: "float",
2844      converter: "ConvertPerspective",
2845      keywords: ["none"],
2846      typedom_types: ["Keyword", "Length"]
2847    },
2848    {
2849      name: "perspective-origin",
2850      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2851      interpolable: true,
2852      layout_dependent: true,
2853      field_group: "*",
2854      field_template: "external",
2855      include_paths: ["third_party/blink/renderer/platform/geometry/length_point.h"],
2856      default_value: "LengthPoint(Length::Percent(50.0), Length::Percent(50.0))",
2857      type_name: "LengthPoint",
2858      converter: "ConvertPosition",
2859      typedom_types: ["Position"]
2860    },
2861    {
2862      name: "pointer-events",
2863      property_methods: ["CSSValueFromComputedStyleInternal"],
2864      independent: true,
2865      inherited: true,
2866      field_template: "keyword",
2867      keywords: [
2868        "none", "auto", "stroke", "fill", "painted", "visible", "visiblestroke",
2869        "visiblefill", "visiblepainted", "bounding-box", "all"
2870      ],
2871      typedom_types: ["Keyword"],
2872      default_value: "auto",
2873    },
2874    {
2875      name: "position",
2876      property_methods: ["CSSValueFromComputedStyleInternal"],
2877      field_template: "keyword",
2878      keywords: [
2879        "static", "relative", "absolute", "fixed", "sticky"
2880      ],
2881      typedom_types: ["Keyword"],
2882      default_value: "static",
2883      getter: "GetPosition",
2884      style_builder_custom_functions: ["inherit"],
2885    },
2886    {
2887      name: "quotes",
2888      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2889      inherited: true,
2890      field_group: "*",
2891      field_template: "pointer",
2892      include_paths: ["third_party/blink/renderer/core/style/quotes_data.h"],
2893      wrapper_pointer_name: "scoped_refptr",
2894      default_value: "nullptr",
2895      type_name: "QuotesData",
2896      converter: "ConvertQuotes",
2897      keywords: ["none"],
2898      typedom_types: ["Keyword"]
2899    },
2900    {
2901      name: "subtree-visibility",
2902      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2903      field_template: "keyword",
2904      keywords: ["visible", "auto", "hidden", "hidden-matchable"],
2905      default_value: "visible",
2906      typedom_types: ["Keyword"],
2907      runtime_flag: "CSSSubtreeVisibility"
2908    },
2909    {
2910      name: "resize",
2911      property_methods: ["CSSValueFromComputedStyleInternal"],
2912      field_group: "*",
2913      field_template: "keyword",
2914      computed_style_custom_functions: ["getter"],
2915      style_builder_custom_functions: ["value"],
2916      keywords: ["none", "both", "horizontal", "vertical", "block", "inline"],
2917      typedom_types: ["Keyword"],
2918      default_value: "none",
2919    },
2920    {
2921      name: "right",
2922      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2923      interpolable: true,
2924      layout_dependent: true,
2925      field_group: "surround",
2926      field_template: "<length>",
2927      keywords: ["auto"],
2928      default_value: "Length()",
2929      typedom_types: ["Keyword", "Length", "Percentage"],
2930      converter: "ConvertLengthOrAuto",
2931    },
2932    {
2933      name: "r",
2934      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2935      interpolable: true,
2936      svg: true,
2937      typedom_types: ["Length", "Percentage"],
2938      converter: "ConvertLength",
2939    },
2940    {
2941      name: "rx",
2942      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2943      interpolable: true,
2944      svg: true,
2945      keywords: ["auto"],
2946      typedom_types: ["Keyword", "Length", "Percentage"],
2947      converter: "ConvertLengthOrAuto",
2948    },
2949    {
2950      name: "ry",
2951      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2952      interpolable: true,
2953      svg: true,
2954      keywords: ["auto"],
2955      typedom_types: ["Keyword", "Length", "Percentage"],
2956      converter: "ConvertLengthOrAuto",
2957    },
2958    {
2959      name: "scroll-behavior",
2960      property_methods: ["CSSValueFromComputedStyleInternal"],
2961      field_group: "*",
2962      field_size: 2, // FIXME: Convert this to a keyword field
2963      field_template: "primitive",
2964      default_value: "mojom::blink::ScrollBehavior::kAuto",
2965      type_name: "mojom::blink::ScrollBehavior",
2966      keywords: ["auto", "smooth"],
2967      typedom_types: ["Keyword"],
2968    },
2969    {
2970      name: "scroll-margin-block-end",
2971      property_methods: ["ParseSingleValue"],
2972      direction_aware_options: {
2973        resolver: "block-end",
2974        physical_group: "scroll-margin",
2975      },
2976      typedom_types: ["Keyword", "Length"]
2977    },
2978    {
2979      name: "scroll-customization",
2980      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
2981      converter: "ConvertFlags<blink::scroll_customization::ScrollDirection>",
2982      type_name: "scroll_customization::ScrollDirection",
2983      field_group: "*",
2984      field_size: 4,
2985      field_template: "primitive",
2986      default_value: "scroll_customization::kScrollDirectionNone",
2987      include_paths: ["third_party/blink/renderer/core/scroll/scroll_customization.h"],
2988      runtime_flag: "ScrollCustomization",
2989    },
2990    {
2991      name: "scroll-margin-block-start",
2992      property_methods: ["ParseSingleValue"],
2993      direction_aware_options: {
2994        resolver: "block-start",
2995        physical_group: "scroll-margin",
2996      },
2997      typedom_types: ["Keyword", "Length"]
2998    },
2999    {
3000      name: "scroll-margin-bottom",
3001      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3002      field_group: "*",
3003      field_template: "primitive",
3004      default_value: "0.0f",
3005      type_name: "float",
3006      converter: "ConvertComputedLength<float>",
3007      typedom_types: ["Keyword", "Length"]
3008    },
3009    {
3010      name: "scroll-margin-inline-end",
3011      property_methods: ["ParseSingleValue"],
3012      direction_aware_options: {
3013        resolver: "inline-end",
3014        physical_group: "scroll-margin",
3015      },
3016      typedom_types: ["Keyword", "Length"]
3017    },
3018    {
3019      name: "scroll-margin-inline-start",
3020      property_methods: ["ParseSingleValue"],
3021      direction_aware_options: {
3022        resolver: "inline-start",
3023        physical_group: "scroll-margin",
3024      },
3025      typedom_types: ["Keyword", "Length"]
3026    },
3027    {
3028      name: "scroll-margin-left",
3029      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3030      field_group: "*",
3031      field_template: "primitive",
3032      default_value: "0.0f",
3033      type_name: "float",
3034      converter: "ConvertComputedLength<float>",
3035      typedom_types: ["Keyword", "Length"]
3036    },
3037    {
3038      name: "scroll-margin-right",
3039      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3040      field_group: "*",
3041      field_template: "primitive",
3042      default_value: "0.0f",
3043      type_name: "float",
3044      converter: "ConvertComputedLength<float>",
3045      typedom_types: ["Keyword", "Length"]
3046    },
3047    {
3048      name: "scroll-margin-top",
3049      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3050      field_group: "*",
3051      field_template: "primitive",
3052      default_value: "0.0f",
3053      type_name: "float",
3054      converter: "ConvertComputedLength<float>",
3055      typedom_types: ["Keyword", "Length"]
3056    },
3057    {
3058      name: "scroll-padding-block-end",
3059      property_methods: ["ParseSingleValue"],
3060      include_paths: ["third_party/blink/renderer/platform/geometry/length.h"],
3061      keywords: ["auto"],
3062      typedom_types: ["Keyword", "Length", "Percentage"],
3063      type_name: "Length",
3064      converter: "ConvertLengthOrAuto",
3065      direction_aware_options: {
3066        resolver: "block-end",
3067        physical_group: "scroll-padding",
3068      },
3069    },
3070    {
3071      name: "scroll-padding-block-start",
3072      property_methods: ["ParseSingleValue"],
3073      include_paths: ["third_party/blink/renderer/platform/geometry/length.h"],
3074      keywords: ["auto"],
3075      typedom_types: ["Keyword", "Length", "Percentage"],
3076      type_name: "Length",
3077      converter: "ConvertLengthOrAuto",
3078      direction_aware_options: {
3079        resolver: "block-start",
3080        physical_group: "scroll-padding",
3081      },
3082    },
3083    {
3084      name: "scroll-padding-bottom",
3085      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3086      field_group: "*",
3087      field_template: "<length>",
3088      default_value: "Length()",
3089      keywords: ["auto"],
3090      typedom_types: ["Keyword", "Length", "Percentage"],
3091      converter: "ConvertLengthOrAuto",
3092    },
3093    {
3094      name: "scroll-padding-inline-end",
3095      property_methods: ["ParseSingleValue"],
3096      include_paths: ["third_party/blink/renderer/platform/geometry/length.h"],
3097      keywords: ["auto"],
3098      typedom_types: ["Keyword", "Length", "Percentage"],
3099      type_name: "Length",
3100      converter: "ConvertLengthOrAuto",
3101      direction_aware_options: {
3102        resolver: "inline-end",
3103        physical_group: "scroll-padding",
3104      },
3105    },
3106    {
3107      name: "scroll-padding-inline-start",
3108      property_methods: ["ParseSingleValue"],
3109      include_paths: ["third_party/blink/renderer/platform/geometry/length.h"],
3110      keywords: ["auto"],
3111      typedom_types: ["Keyword", "Length", "Percentage"],
3112      type_name: "Length",
3113      converter: "ConvertLengthOrAuto",
3114      direction_aware_options: {
3115        resolver: "inline-start",
3116        physical_group: "scroll-padding",
3117      },
3118    },
3119    {
3120      name: "scroll-padding-left",
3121      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3122      field_group: "*",
3123      field_template: "<length>",
3124      default_value: "Length()",
3125      keywords: ["auto"],
3126      typedom_types: ["Keyword", "Length", "Percentage"],
3127      converter: "ConvertLengthOrAuto",
3128    },
3129    {
3130      name: "scroll-padding-right",
3131      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3132      field_group: "*",
3133      field_template: "<length>",
3134      default_value: "Length()",
3135      keywords: ["auto"],
3136      typedom_types: ["Keyword", "Length", "Percentage"],
3137      converter: "ConvertLengthOrAuto",
3138    },
3139    {
3140      name: "scroll-padding-top",
3141      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3142      field_group: "*",
3143      field_template: "<length>",
3144      default_value: "Length()",
3145      keywords: ["auto"],
3146      typedom_types: ["Keyword", "Length", "Percentage"],
3147      converter: "ConvertLengthOrAuto",
3148    },
3149    {
3150      name: "scroll-snap-align",
3151      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3152      field_group: "*",
3153      field_template: "external",
3154      include_paths: ["cc/input/scroll_snap_data.h"],
3155      default_value: "cc::ScrollSnapAlign()",
3156      getter: "GetScrollSnapAlign",
3157      type_name: "cc::ScrollSnapAlign",
3158      converter: "ConvertSnapAlign",
3159      keywords: ["none", "start", "end", "center"],
3160      typedom_types: ["Keyword"]
3161    },
3162    {
3163      name: "scroll-snap-stop",
3164      property_methods: ["CSSValueFromComputedStyleInternal"],
3165      field_template: "keyword",
3166      keywords: ["normal", "always"],
3167      default_value: "normal",
3168      typedom_types: ["Keyword"]
3169    },
3170    {
3171      name: "scroll-snap-type",
3172      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3173      field_group: "*",
3174      field_template: "external",
3175      include_paths: ["cc/input/scroll_snap_data.h"],
3176      default_value: "cc::ScrollSnapType()",
3177      getter: "GetScrollSnapType",
3178      type_name: "cc::ScrollSnapType",
3179      converter: "ConvertSnapType",
3180      keywords: ["none", "x", "y", "block", "inline", "both", "mandatory", "proximity"],
3181      typedom_types: ["Keyword"]
3182    },
3183    {
3184      name: "shape-image-threshold",
3185      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3186      interpolable: true,
3187      field_group: "*",
3188      field_template: "primitive",
3189      default_value: "0.0",
3190      type_name: "float",
3191      computed_style_custom_functions: ["setter"],
3192      typedom_types: ["Number"]
3193    },
3194    {
3195      name: "shape-margin",
3196      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3197      interpolable: true,
3198      field_group: "*",
3199      field_template: "<length>",
3200      default_value: "Length::Fixed(0)",
3201      converter: "ConvertLength",
3202      keywords: ["none"],
3203      typedom_types: ["Length", "Percentage"]
3204    },
3205    {
3206      name: "shape-outside",
3207      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3208      interpolable: true,
3209      field_group: "*",
3210      field_template: "external",
3211      include_paths: ["third_party/blink/renderer/core/style/shape_value.h"],
3212      wrapper_pointer_name: "Persistent",
3213      default_value: "nullptr",
3214      typedom_types: ["Keyword", "Image"],
3215      type_name: "ShapeValue",
3216      computed_style_custom_functions: ["getter"],
3217      converter: "ConvertShapeValue",
3218      keywords: ["none"]
3219    },
3220    {
3221      name: "shape-rendering",
3222      property_methods: ["CSSValueFromComputedStyleInternal"],
3223      inherited: true,
3224      svg: true,
3225      keywords: ["auto", "optimizespeed", "crispedges", "geometricprecision"],
3226      typedom_types: ["Keyword"],
3227    },
3228    {
3229      name: "size",
3230      property_methods: ["ParseSingleValue"],
3231      style_builder_custom_functions: ["initial", "inherit", "value"],
3232    },
3233    {
3234      name: "speak",
3235      property_methods: ["CSSValueFromComputedStyleInternal"],
3236      inherited: true,
3237      field_group: "*",
3238      field_template: "keyword",
3239      keywords: [
3240        "none", "normal", "spell-out", "digits", "literal-punctuation",
3241        "no-punctuation"
3242      ],
3243      default_value: "normal",
3244    },
3245    {
3246      name: "stop-color",
3247      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "ColorIncludingFallback"],
3248      interpolable: true,
3249      svg: true,
3250      converter: "ConvertStyleColor",
3251      keywords: ["currentcolor"],
3252      typedom_types: ["Keyword"],
3253    },
3254    {
3255      name: "stop-opacity",
3256      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3257      interpolable: true,
3258      svg: true,
3259      converter: "ConvertAlpha",
3260      typedom_types: ["Number"]
3261    },
3262    {
3263      name: "stroke",
3264      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3265      interpolable: true,
3266      inherited: true,
3267      svg: true,
3268      initial: "InitialStrokePaint",
3269      setter: "SetStrokePaint",
3270      getter: "StrokePaint",
3271      converter: "ConvertSVGPaint",
3272      affected_by_forced_colors: true,
3273    },
3274    {
3275      name: "stroke-dasharray",
3276      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3277      interpolable: true,
3278      inherited: true,
3279      svg: true,
3280      name_for_methods: "StrokeDashArray",
3281      converter: "ConvertStrokeDasharray",
3282      keywords: ["none"],
3283      typedom_types: ["Keyword"]
3284    },
3285    {
3286      name: "stroke-dashoffset",
3287      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3288      interpolable: true,
3289      inherited: true,
3290      svg: true,
3291      name_for_methods: "StrokeDashOffset",
3292      converter: "ConvertLength",
3293      typedom_types: ["Length", "Percentage"]
3294    },
3295    {
3296      name: "stroke-linecap",
3297      property_methods: ["CSSValueFromComputedStyleInternal"],
3298      inherited: true,
3299      svg: true,
3300      name_for_methods: "CapStyle",
3301      type_name: "LineCap",
3302      keywords: ["butt", "round", "square"],
3303      typedom_types: ["Keyword"]
3304    },
3305    {
3306      name: "stroke-linejoin",
3307      property_methods: ["CSSValueFromComputedStyleInternal"],
3308      inherited: true,
3309      svg: true,
3310      name_for_methods: "JoinStyle",
3311      type_name: "LineJoin",
3312      keywords: ["miter", "bevel", "round"],
3313      typedom_types: ["Keyword"]
3314    },
3315    {
3316      name: "stroke-miterlimit",
3317      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3318      interpolable: true,
3319      inherited: true,
3320      svg: true,
3321      name_for_methods: "StrokeMiterLimit",
3322      type_name: "float",
3323      typedom_types: ["Number"]
3324    },
3325    {
3326      name: "stroke-opacity",
3327      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3328      interpolable: true,
3329      inherited: true,
3330      svg: true,
3331      converter: "ConvertAlpha",
3332      typedom_types: ["Number"]
3333    },
3334    {
3335      name: "stroke-width",
3336      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3337      interpolable: true,
3338      inherited: true,
3339      svg: true,
3340      converter: "ConvertUnzoomedLength",
3341      typedom_types: ["Length", "Percentage"]
3342    },
3343    {
3344      name: "table-layout",
3345      property_methods: ["CSSValueFromComputedStyleInternal"],
3346      field_template: "keyword",
3347      keywords: [
3348        "auto", "fixed"
3349      ],
3350      typedom_types: ["Keyword"],
3351      default_value: "auto",
3352    },
3353    {
3354      name: "tab-size",
3355      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3356      inherited: true,
3357      field_group: "*",
3358      field_template: "external",
3359      include_paths: ["third_party/blink/renderer/platform/text/tab_size.h"],
3360      default_value: "TabSize(8)",
3361      getter: "GetTabSize",
3362      type_name: "TabSize",
3363      converter: "ConvertLengthOrTabSpaces",
3364      computed_style_custom_functions: ["setter"],
3365      typedom_types: ["Number", "Length"]
3366    },
3367    {
3368      name: "text-align",
3369      property_methods: ["CSSValueFromComputedStyleInternal"],
3370      independent: false,
3371      inherited: true,
3372      field_template: "keyword",
3373      keywords: [
3374        "left", "right", "center", "justify", "-webkit-left", "-webkit-right",
3375        "-webkit-center", "start", "end"
3376      ],
3377      typedom_types: ["Keyword"],
3378      default_value: "start",
3379      getter: "GetTextAlign",
3380      style_builder_custom_functions: ["value"],
3381    },
3382    {
3383      name: "text-align-last",
3384      property_methods: ["CSSValueFromComputedStyleInternal"],
3385      inherited: true,
3386      field_group: "*",
3387      field_template: "keyword",
3388      keywords: ["auto", "start", "end", "left", "right", "center", "justify"],
3389      default_value: "auto",
3390      typedom_types: ["Keyword"]
3391    },
3392    {
3393      name: "text-anchor",
3394      property_methods: ["CSSValueFromComputedStyleInternal"],
3395      inherited: true,
3396      svg: true,
3397      keywords: ["start", "middle", "end"],
3398      typedom_types: ["Keyword"]
3399    },
3400    {
3401      name: "text-combine-upright",
3402      property_methods: ["CSSValueFromComputedStyleInternal"],
3403      inherited: true,
3404      field_group: "*",
3405      field_template: "keyword",
3406      keywords: ["none", "all"],
3407      typedom_types: ["Keyword"],
3408      default_value: "none",
3409      name_for_methods: "TextCombine",
3410      valid_for_marker: true,
3411    },
3412    {
3413      name: "text-decoration-color",
3414      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "ColorIncludingFallback"],
3415      interpolable: true,
3416      field_group: "*",
3417      field_template: "external",
3418      include_paths: ["third_party/blink/renderer/core/css/style_color.h"],
3419      default_value: "StyleColor::CurrentColor()",
3420      type_name: "StyleColor",
3421      keywords: ["currentcolor"],
3422      typedom_types: ["Keyword"],
3423      converter: "ConvertStyleColor",
3424      style_builder_template: "color",
3425      affected_by_forced_colors: true,
3426      valid_for_first_letter: true,
3427      valid_for_cue: true,
3428    },
3429    {
3430      name: "text-decoration-line",
3431      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3432      field_group: "visual",
3433      field_template: "multi_keyword",
3434      keywords: ["none", "underline", "overline", "line-through", "blink"],
3435      typedom_types: ["Keyword"],
3436      default_value: "none",
3437      name_for_methods: "TextDecoration",
3438      type_name: "TextDecoration",
3439      converter: "ConvertFlags<TextDecoration>",
3440      valid_for_first_letter: true,
3441      valid_for_cue: true,
3442    },
3443    {
3444      name: "text-decoration-skip-ink",
3445      property_methods: ["CSSValueFromComputedStyleInternal"],
3446      inherited: true,
3447      field_group: "*",
3448      field_template: "keyword",
3449      keywords: ["none", "auto"],
3450      typedom_types: ["Keyword"],
3451      default_value: "auto",
3452      valid_for_first_letter: true,
3453      valid_for_cue: true,
3454    },
3455    {
3456      name: "text-decoration-style",
3457      property_methods: ["CSSValueFromComputedStyleInternal"],
3458      field_group: "*",
3459      field_template: "keyword",
3460      keywords: ["solid", "double", "dotted", "dashed", "wavy"],
3461      typedom_types: ["Keyword"],
3462      default_value: "solid",
3463      valid_for_first_letter: true,
3464      valid_for_cue: true,
3465    },
3466    {
3467      name: "text-indent",
3468      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3469      interpolable: true,
3470      inherited: true,
3471      field_group: "*",
3472      field_template: "<length>",
3473      default_value: "Length::Fixed()",
3474      style_builder_custom_functions: ["initial", "inherit", "value"],
3475      typedom_types: ["Length", "Percentage"]
3476    },
3477    {
3478      name: "text-justify",
3479      property_methods: ["CSSValueFromComputedStyleInternal"],
3480      inherited: true,
3481      runtime_flag: "CSS3Text",
3482      field_group: "*",
3483      field_template: "keyword",
3484      include_paths: ["third_party/blink/renderer/platform/text/text_justify.h"],
3485      keywords: ["auto", "none", "inter-word", "distribute"],
3486      default_value: "auto",
3487      getter: "GetTextJustify",
3488      type_name: "TextJustify",
3489      typedom_types: ["Keyword"],
3490      valid_for_first_letter: true,
3491    },
3492    {
3493      name: "text-overflow",
3494      property_methods: ["CSSValueFromComputedStyleInternal"],
3495      field_group: "*",
3496      field_template: "keyword",
3497      keywords: ["clip", "ellipsis"],
3498      typedom_types: ["Keyword"],
3499      default_value: "clip",
3500    },
3501    {
3502      name: "text-shadow",
3503      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3504      interpolable: true,
3505      inherited: true,
3506      field_group: "*",
3507      field_template: "pointer",
3508      include_paths: ["third_party/blink/renderer/core/style/shadow_list.h"],
3509      wrapper_pointer_name: "scoped_refptr",
3510      default_value: "nullptr",
3511      type_name: "ShadowList",
3512      converter: "ConvertShadowList",
3513      keywords: ["none"],
3514      typedom_types: ["Keyword"],
3515      affected_by_forced_colors: true,
3516      valid_for_first_letter: true,
3517      valid_for_cue: true,
3518    },
3519    {
3520      name: "text-size-adjust",
3521      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3522      interpolable: true,
3523      inherited: true,
3524      field_group: "*",
3525      field_template: "external",
3526      include_paths: ["third_party/blink/renderer/core/style/text_size_adjust.h"],
3527      default_value: "TextSizeAdjust::AdjustAuto()",
3528      getter: "GetTextSizeAdjust",
3529      type_name: "TextSizeAdjust",
3530      converter: "ConvertTextSizeAdjust",
3531      keywords: ["none", "auto"],
3532      typedom_types: ["Keyword", "Percentage"]
3533    },
3534    {
3535      name: "text-transform",
3536      property_methods: ["CSSValueFromComputedStyleInternal"],
3537      independent: true,
3538      inherited: true,
3539      field_template: "keyword",
3540      keywords: ["capitalize", "uppercase", "lowercase", "none"],
3541      typedom_types: ["Keyword"],
3542      default_value: "none",
3543      valid_for_first_letter: true,
3544    },
3545    {
3546      name: "text-underline-position",
3547      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3548      inherited: true,
3549      field_group: "*",
3550      field_size: 4,
3551      field_template: "primitive",
3552      default_value: "kTextUnderlinePositionAuto",
3553      name_for_methods: "TextUnderlinePosition",
3554      type_name: "unsigned",
3555      converter: "ConvertTextUnderlinePosition",
3556      keywords: ["auto", "from-font", "under", "left", "right"],
3557      typedom_types: ["Keyword"],
3558      valid_for_first_letter: true,
3559    },
3560    {
3561      name: "top",
3562      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3563      interpolable: true,
3564      layout_dependent: true,
3565      field_group: "surround",
3566      field_template: "<length>",
3567      keywords: ["auto"],
3568      default_value: "Length()",
3569      typedom_types: ["Keyword", "Length", "Percentage"],
3570      converter: "ConvertLengthOrAuto",
3571    },
3572    {
3573      name: "touch-action",
3574      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3575      field_group: "*",
3576      field_size: 6, // FIXME: Make this use "kTouchActionBits".
3577      field_template: "primitive",
3578      include_paths: ["third_party/blink/renderer/platform/graphics/touch_action.h"],
3579      default_value: "TouchAction::kAuto",
3580      type_name: "TouchAction",
3581      converter: "ConvertFlags<blink::TouchAction>",
3582      keywords: ["auto", "none", "pan-x", "pan-left", "pan-right", "pan-y", "pan-up", "pan-down", "pinch-zoom", "manipulation"],
3583      typedom_types: ["Keyword"]
3584    },
3585    {
3586      name: "transform",
3587      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3588      interpolable: true,
3589      compositable: true,
3590      layout_dependent: true,
3591      field_group: "*",
3592      field_template: "external",
3593      include_paths: ["third_party/blink/renderer/platform/transforms/transform_operations.h"],
3594      keywords: ["none"],
3595      default_value: "EmptyTransformOperations()",
3596      typedom_types: ["Keyword", "Transform"],
3597      type_name: "TransformOperations",
3598      converter: "ConvertTransformOperations",
3599    },
3600    {
3601      name: "transform-box",
3602      property_methods: ["CSSValueFromComputedStyleInternal"],
3603      field_template: "keyword",
3604      keywords: ["fill-box", "view-box"],
3605      default_value: "view-box",
3606      typedom_types: ["Keyword"]
3607    },
3608    {
3609      name: "transform-origin",
3610      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3611      interpolable: true,
3612      layout_dependent: true,
3613      field_group: "*",
3614      field_template: "external",
3615      include_paths: ["third_party/blink/renderer/core/style/transform_origin.h"],
3616      default_value: "TransformOrigin(Length::Percent(50.0), Length::Percent(50.0), 0)",
3617      getter: "GetTransformOrigin",
3618      type_name: "TransformOrigin",
3619      converter: "ConvertTransformOrigin",
3620    },
3621    {
3622      name: "transform-style",
3623      property_methods: ["CSSValueFromComputedStyleInternal"],
3624      field_group: "*",
3625      field_template: "keyword",
3626      keywords: ["flat", "preserve-3d"],
3627      default_value: "flat",
3628      typedom_types: ["Keyword"],
3629      name_for_methods: "TransformStyle3D",
3630    },
3631    {
3632      name: "translate",
3633      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3634      interpolable: true,
3635      compositable: true,
3636      layout_dependent: true,
3637      runtime_flag: "CSSIndependentTransformProperties",
3638      field_group: "*",
3639      field_template: "pointer",
3640      include_paths: ["third_party/blink/renderer/platform/transforms/translate_transform_operation.h"],
3641      wrapper_pointer_name: "scoped_refptr",
3642      default_value: "nullptr",
3643      type_name: "TranslateTransformOperation",
3644      converter: "ConvertTranslate",
3645    },
3646    {
3647      name: "rotate",
3648      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3649      interpolable: true,
3650      compositable: true,
3651      runtime_flag: "CSSIndependentTransformProperties",
3652      field_group: "*",
3653      field_template: "pointer",
3654      include_paths: ["third_party/blink/renderer/platform/transforms/rotate_transform_operation.h"],
3655      wrapper_pointer_name: "scoped_refptr",
3656      default_value: "nullptr",
3657      type_name: "RotateTransformOperation",
3658      converter: "ConvertRotate",
3659    },
3660    {
3661      name: "scale",
3662      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3663      interpolable: true,
3664      compositable: true,
3665      runtime_flag: "CSSIndependentTransformProperties",
3666      field_group: "*",
3667      field_template: "pointer",
3668      include_paths: ["third_party/blink/renderer/platform/transforms/scale_transform_operation.h"],
3669      wrapper_pointer_name: "scoped_refptr",
3670      default_value: "nullptr",
3671      type_name: "ScaleTransformOperation",
3672      converter: "ConvertScale",
3673    },
3674    {
3675      name: "unicode-bidi",
3676      property_methods: ["CSSValueFromComputedStyleInternal"],
3677      affected_by_all: false,
3678      field_template: "keyword",
3679      include_paths: ["third_party/blink/renderer/platform/text/unicode_bidi.h"],
3680      keywords: [
3681        "normal", "embed", "bidi-override", "isolate", "plaintext",
3682        "isolate-override"
3683      ],
3684      typedom_types: ["Keyword"],
3685      default_value: "normal",
3686      type_name: "UnicodeBidi",
3687      valid_for_marker: true,
3688    },
3689    {
3690      name: "vector-effect",
3691      property_methods: ["CSSValueFromComputedStyleInternal"],
3692      svg: true,
3693      keywords: ["none", "non-scaling-stroke"],
3694      typedom_types: ["Keyword"]
3695    },
3696    {
3697      name: "vertical-align",
3698      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3699      interpolable: true,
3700      style_builder_custom_functions: ["inherit", "value"],
3701      typedom_types: ["Keyword", "Length", "Percentage"],
3702      keywords: ["baseline", "sub", "super", "text-top", "text-bottom", "middle"],
3703      valid_for_first_letter: true,
3704    },
3705    {
3706      name: "visibility",
3707      property_methods: ["CSSValueFromComputedStyleInternal"],
3708      independent: true,
3709      interpolable: true,
3710      inherited: true,
3711      field_template: "keyword",
3712      keywords: ["visible", "hidden", "collapse"],
3713      typedom_types: ["Keyword"],
3714      default_value: "visible",
3715      valid_for_first_letter: true,
3716      valid_for_cue: true,
3717    },
3718    {
3719      name: "x",
3720      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3721      interpolable: true,
3722      svg: true,
3723      typedom_types: ["Length", "Percentage"],
3724      converter: "ConvertLength",
3725    },
3726    {
3727      name: "y",
3728      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3729      interpolable: true,
3730      svg: true,
3731      typedom_types: ["Length", "Percentage"],
3732      converter: "ConvertLength",
3733    },
3734    {
3735      name: "-webkit-appearance",
3736      property_methods: ["CSSValueFromComputedStyleInternal"],
3737      field_group: "*",
3738      field_size: 5,
3739      field_template: "primitive",
3740      computed_style_custom_functions: ["getter"],
3741      default_value: "kNoControlPart",
3742      type_name: "ControlPart",
3743    },
3744    {
3745      name: "-webkit-app-region",
3746      property_methods: ["CSSValueFromComputedStyleInternal"],
3747      field_group: "*",
3748      field_template: "keyword",
3749      keywords: ["none", "drag", "no-drag"],
3750      default_value: "none",
3751      name_for_methods: "DraggableRegionMode",
3752      style_builder_custom_functions: ["initial", "inherit", "value"],
3753    },
3754    {
3755      name: "-webkit-border-horizontal-spacing",
3756      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3757      interpolable: true,
3758      inherited: true,
3759      field_group: "inherited",
3760      field_template: "primitive",
3761      default_value: "0",
3762      name_for_methods: "HorizontalBorderSpacing",
3763      type_name: "short",
3764      converter: "ConvertComputedLength<short>",
3765      valid_for_first_letter: true,
3766    },
3767    {
3768      name: "-webkit-border-image",
3769      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3770      style_builder_custom_functions: ["value"],
3771      valid_for_first_letter: true,
3772    },
3773    {
3774      name: "-webkit-border-vertical-spacing",
3775      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3776      interpolable: true,
3777      inherited: true,
3778      field_group: "inherited",
3779      field_template: "primitive",
3780      default_value: "0",
3781      name_for_methods: "VerticalBorderSpacing",
3782      type_name: "short",
3783      converter: "ConvertComputedLength<short>",
3784      valid_for_first_letter: true,
3785    },
3786    // For valid values of box-align see
3787    // http://www.w3.org/TR/2009/WD-css3-flexbox-20090723/#alignment
3788    {
3789      name: "-webkit-box-align",
3790      property_methods: ["CSSValueFromComputedStyleInternal"],
3791      field_group: "*",
3792      field_template: "keyword",
3793      keywords: ["stretch", "start", "center", "end", "baseline"],
3794      default_value: "stretch",
3795      type_name: "EBoxAlignment",
3796    },
3797    {
3798      name: "-webkit-box-decoration-break",
3799      property_methods: ["CSSValueFromComputedStyleInternal"],
3800      field_group: "box",
3801      field_template: "keyword",
3802      keywords: ["slice", "clone"],
3803      default_value: "slice",
3804    },
3805    {
3806      name: "-webkit-box-direction",
3807      property_methods: ["CSSValueFromComputedStyleInternal"],
3808      independent: true,
3809      inherited: true,
3810      field_template: "keyword",
3811      keywords: ["normal", "reverse"],
3812      default_value: "normal",
3813    },
3814    {
3815      name: "-webkit-box-flex",
3816      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3817      field_group: "*",
3818      field_template: "primitive",
3819      default_value: "0.0f",
3820      type_name: "float",
3821    },
3822    {
3823      name: "-webkit-box-ordinal-group",
3824      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3825      field_group: "*",
3826      field_template: "primitive",
3827      default_value: "1",
3828      type_name: "unsigned",
3829      computed_style_custom_functions: ["setter"],
3830    },
3831    {
3832      name: "-webkit-box-orient",
3833      property_methods: ["CSSValueFromComputedStyleInternal"],
3834      field_group: "*",
3835      field_template: "keyword",
3836      keywords: ["horizontal", "vertical"],
3837      default_value: "horizontal",
3838    },
3839    {
3840      name: "-webkit-box-pack",
3841      property_methods: ["CSSValueFromComputedStyleInternal"],
3842      field_group: "*",
3843      field_template: "keyword",
3844      keywords: ["start", "center", "end", "justify"],
3845      default_value: "start",
3846    },
3847    {
3848      name: "-webkit-box-reflect",
3849      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3850      field_group: "*",
3851      field_template: "pointer",
3852      include_paths: ["third_party/blink/renderer/core/style/style_reflection.h"],
3853      wrapper_pointer_name: "scoped_refptr",
3854      default_value: "nullptr",
3855      type_name: "StyleReflection",
3856      converter: "ConvertBoxReflect",
3857    },
3858    {
3859      name: "column-count",
3860      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3861      interpolable: true,
3862      field_group: "*",
3863      field_template: "primitive",
3864      default_value: "1",
3865      type_name: "unsigned short",
3866      computed_style_custom_functions: ["setter"],
3867      style_builder_template: "auto",
3868      keywords: ["auto"],
3869      typedom_types: ["Keyword", "Number"]
3870    },
3871    {
3872      name: "column-gap",
3873      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3874      interpolable: true,
3875      field_group: "*",
3876      field_template: "external",
3877      include_paths: ["third_party/blink/renderer/core/style/gap_length.h"],
3878      default_value: "GapLength()",
3879      type_name: "GapLength",
3880      converter: "ConvertGapLength",
3881      keywords: ["normal"],
3882      typedom_types: ["Keyword", "Length", "Percentage"],
3883    },
3884    {
3885      name: "row-gap",
3886      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3887      interpolable: true,
3888      field_group: "*",
3889      field_template: "external",
3890      include_paths: ["third_party/blink/renderer/core/style/gap_length.h"],
3891      default_value: "GapLength()",
3892      type_name: "GapLength",
3893      converter: "ConvertGapLength",
3894      keywords: ["normal"],
3895      typedom_types: ["Keyword", "Length", "Percentage"],
3896    },
3897    {
3898      name: "column-rule-color",
3899      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "ColorIncludingFallback"],
3900      interpolable: true,
3901      field_group: "*",
3902      field_template: "external",
3903      include_paths: ["third_party/blink/renderer/platform/graphics/color.h"],
3904      default_value: "0",
3905      type_name: "Color",
3906      computed_style_custom_functions: ["getter","setter"],
3907      keywords: ["currentcolor"],
3908      typedom_types: ["Keyword"],
3909      converter: "ConvertStyleColor",
3910      style_builder_template: "color",
3911      affected_by_forced_colors: true,
3912    },
3913    {
3914      name: "column-rule-style",
3915      property_methods: ["CSSValueFromComputedStyleInternal"],
3916      field_group: "*",
3917      field_template: "keyword",
3918      keywords: [
3919        "none", "hidden", "inset", "groove", "outset", "ridge", "dotted",
3920        "dashed", "solid", "double"
3921      ],
3922      default_value: "none",
3923      type_name: "EBorderStyle",
3924      typedom_types: ["Keyword"]
3925    },
3926    {
3927      name: "column-rule-width",
3928      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3929      interpolable: true,
3930      field_group: "*",
3931      field_template: "external",
3932      include_paths: ["third_party/blink/renderer/platform/geometry/layout_unit.h"],
3933      default_value: "LayoutUnit(3)",
3934      type_name: "LayoutUnit",
3935      computed_style_custom_functions: ["initial", "getter", "setter"],
3936      converter: "ConvertLineWidth<unsigned short>",
3937      keywords: ["thin", "medium", "thick"],
3938      typedom_types: ["Keyword", "Length"],
3939    },
3940    {
3941      name: "column-span",
3942      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3943      field_group: "*",
3944      field_template: "keyword",
3945      keywords: ["none", "all"],
3946      default_value: "none",
3947      getter: "GetColumnSpan",
3948      typedom_types: ["Keyword"],
3949    },
3950    {
3951      name: "column-width",
3952      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3953      interpolable: true,
3954      field_group: "*",
3955      field_template: "primitive",
3956      default_value: "0.0f",
3957      type_name: "float",
3958      computed_style_custom_functions: ["setter"],
3959      style_builder_template: "auto",
3960      converter: "ConvertComputedLength<float>",
3961      keywords: ["auto"],
3962      typedom_types: ["Keyword", "Length"],
3963    },
3964    {
3965      name: "-webkit-highlight",
3966      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3967      inherited: true,
3968      field_group: "*",
3969      field_template: "external",
3970      include_paths: ["third_party/blink/renderer/platform/wtf/text/atomic_string.h"],
3971      default_value: "g_null_atom",
3972      type_name: "AtomicString",
3973      converter: "ConvertString<CSSValueID::kNone>",
3974    },
3975    {
3976      name: "-webkit-hyphenate-character",
3977      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
3978      inherited: true,
3979      field_group: "*",
3980      field_template: "external",
3981      include_paths: ["third_party/blink/renderer/platform/wtf/text/atomic_string.h"],
3982      default_value: "AtomicString()",
3983      name_for_methods: "HyphenationString",
3984      type_name: "AtomicString",
3985      converter: "ConvertString<CSSValueID::kAuto>",
3986    },
3987    {
3988      name: "-webkit-line-break",
3989      property_methods: ["CSSValueFromComputedStyleInternal"],
3990      inherited: true,
3991      field_group: "*",
3992      field_template: "keyword",
3993      keywords: ["auto", "loose", "normal", "strict", "after-white-space", "anywhere"],
3994      default_value: "auto",
3995      type_name: "LineBreak",
3996    },
3997    {
3998      name: "line-break",
3999      property_methods: ["CSSValueFromComputedStyleInternal"],
4000      inherited: true,
4001      type_name: "LineBreak",
4002      keywords: ["auto", "loose", "normal", "strict", "anywhere"],
4003      typedom_types: ["Keyword"]
4004    },
4005    // An Apple extension.
4006    {
4007      name: "-webkit-line-clamp",
4008      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
4009      field_group: "*",
4010      field_template: "external",
4011      default_value: "0",
4012      type_name: "int",
4013    },
4014    {
4015      name: "-webkit-mask-box-image-outset",
4016      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
4017      interpolable: true,
4018      style_builder_template: "mask_box",
4019      style_builder_template_args: {
4020        modifier_type: "Outset",
4021      },
4022    },
4023    {
4024      name: "-webkit-mask-box-image-repeat",
4025      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
4026      style_builder_template: "mask_box",
4027      style_builder_template_args: {
4028        modifier_type: "Repeat",
4029      },
4030    },
4031    {
4032      name: "-webkit-mask-box-image-slice",
4033      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
4034      interpolable: true,
4035      style_builder_template: "mask_box",
4036      style_builder_template_args: {
4037        modifier_type: "Slice",
4038      },
4039    },
4040    {
4041      name: "-webkit-mask-box-image-source",
4042      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
4043      interpolable: true,
4044      style_builder_custom_functions: ["value"],
4045    },
4046    {
4047      name: "-webkit-mask-box-image-width",
4048      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
4049      interpolable: true,
4050      style_builder_template: "mask_box",
4051      style_builder_template_args: {
4052        modifier_type: "Width",
4053      },
4054    },
4055    {
4056      name: "-webkit-mask-clip",
4057      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
4058      style_builder_template: "mask_layer",
4059      style_builder_template_args: {
4060        fill_type: "Clip",
4061      },
4062    },
4063    {
4064      name: "-webkit-mask-composite",
4065      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
4066      style_builder_template: "mask_layer",
4067      style_builder_template_args: {
4068        fill_type: "Composite",
4069      },
4070    },
4071    {
4072      name: "-webkit-mask-image",
4073      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
4074      interpolable: true,
4075      style_builder_template: "mask_layer",
4076      style_builder_template_args: {
4077        fill_type: "Image",
4078        fill_type_getter: "GetImage"
4079      },
4080    },
4081    {
4082      name: "-webkit-mask-origin",
4083      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
4084      style_builder_template: "mask_layer",
4085      style_builder_template_args: {
4086        fill_type: "Origin",
4087      },
4088    },
4089    {
4090      name: "-webkit-mask-position-x",
4091      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
4092      interpolable: true,
4093      style_builder_template: "mask_layer",
4094      style_builder_template_args: {
4095        fill_type: "PositionX",
4096      },
4097    },
4098    {
4099      name: "-webkit-mask-position-y",
4100      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
4101      interpolable: true,
4102      style_builder_template: "mask_layer",
4103      style_builder_template_args: {
4104        fill_type: "PositionY",
4105      },
4106    },
4107    {
4108      name: "-webkit-mask-repeat-x",
4109      style_builder_template: "mask_layer",
4110      style_builder_template_args: {
4111        fill_type: "RepeatX",
4112      },
4113    },
4114    {
4115      name: "-webkit-mask-repeat-y",
4116      style_builder_template: "mask_layer",
4117      style_builder_template_args: {
4118        fill_type: "RepeatY",
4119      },
4120    },
4121    {
4122      name: "-webkit-mask-size",
4123      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
4124      interpolable: true,
4125      style_builder_template: "mask_layer",
4126      style_builder_template_args: {
4127        fill_type: "Size",
4128      },
4129    },
4130    {
4131      name: "-webkit-perspective-origin-x",
4132      property_methods: ["ParseSingleValue"],
4133      interpolable: true,
4134      converter: "ConvertLength",
4135    },
4136    {
4137      name: "-webkit-perspective-origin-y",
4138      property_methods: ["ParseSingleValue"],
4139      interpolable: true,
4140      converter: "ConvertLength",
4141    },
4142    {
4143      name: "-webkit-print-color-adjust",
4144      property_methods: ["CSSValueFromComputedStyleInternal"],
4145      independent: true,
4146      inherited: true,
4147      field_template: "keyword",
4148      keywords: ["economy", "exact"],
4149      default_value: "economy",
4150    },
4151    {
4152      name: "-webkit-rtl-ordering",
4153      property_methods: ["CSSValueFromComputedStyleInternal"],
4154      independent: true,
4155      inherited: true,
4156      field_template: "keyword",
4157      keywords: ["logical", "visual"],
4158      default_value: "logical",
4159      name_for_methods: "RtlOrdering",
4160      setter: "SetRtlOrdering",
4161      type_name: "EOrder",
4162    },
4163    {
4164      name: "-webkit-ruby-position",
4165      property_methods: ["CSSValueFromComputedStyleInternal"],
4166      inherited: true,
4167      field_group: "*",
4168      field_template: "keyword",
4169      keywords: ["before", "after"],
4170      default_value: "before",
4171      type_name: "RubyPosition",
4172    },
4173    {
4174      name: "-webkit-tap-highlight-color",
4175      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "ColorIncludingFallback"],
4176      inherited: true,
4177      field_group: "*",
4178      field_template: "<color>",
4179      default_value: "LayoutTheme::TapHighlightColor()",
4180      converter: "ConvertColor",
4181      affected_by_forced_colors: true,
4182    },
4183    {
4184      name: "-webkit-text-combine",
4185      property_methods: ["CSSValueFromComputedStyleInternal"],
4186      inherited: true,
4187      name_for_methods: "TextCombine",
4188    },
4189    {
4190      name: "-webkit-text-emphasis-color",
4191      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "ColorIncludingFallback"],
4192      inherited: true,
4193      field_group: "*",
4194      field_template: "external",
4195      include_paths: ["third_party/blink/renderer/platform/graphics/color.h"],
4196      default_value: "Color()",
4197      type_name: "Color",
4198      computed_style_custom_functions: ["getter", "setter"],
4199      converter: "ConvertStyleColor",
4200      style_builder_template: "color",
4201      affected_by_forced_colors: true,
4202    },
4203    {
4204      name: "-webkit-text-emphasis-position",
4205      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
4206      inherited: true,
4207      field_group: "*",
4208      field_size: 2,
4209      field_template: "primitive",
4210      default_value: "TextEmphasisPosition::kOverRight",
4211      type_name: "TextEmphasisPosition",
4212      converter: "ConvertTextTextEmphasisPosition",
4213    },
4214    {
4215      name: "-webkit-text-emphasis-style",
4216      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
4217      inherited: true,
4218      style_builder_custom_functions: ["initial", "inherit", "value"],
4219    },
4220    {
4221      name: "-webkit-text-fill-color",
4222      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "ColorIncludingFallback"],
4223      inherited: true,
4224      field_group: "*",
4225      field_template: "external",
4226      include_paths: ["third_party/blink/renderer/platform/graphics/color.h"],
4227      default_value: "Color()",
4228      type_name: "Color",
4229      computed_style_custom_functions: ["getter", "setter"],
4230      converter: "ConvertStyleColor",
4231      style_builder_template: "color",
4232    },
4233    {
4234      name: "-webkit-text-security",
4235      property_methods: ["CSSValueFromComputedStyleInternal"],
4236      inherited: true,
4237      field_group: "*",
4238      field_template: "keyword",
4239      keywords: ["none", "disc", "circle", "square"],
4240      default_value: "none",
4241    },
4242    {
4243      name: "-webkit-text-stroke-color",
4244      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "ColorIncludingFallback"],
4245      interpolable: true,
4246      inherited: true,
4247      field_group: "*",
4248      field_template: "external",
4249      include_paths: ["third_party/blink/renderer/platform/graphics/color.h"],
4250      default_value: "Color()",
4251      type_name: "Color",
4252      computed_style_custom_functions: ["getter", "setter"],
4253      converter: "ConvertStyleColor",
4254      style_builder_template: "color",
4255    },
4256    {
4257      name: "-webkit-text-stroke-width",
4258      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
4259      inherited: true,
4260      field_group: "*",
4261      field_template: "primitive",
4262      default_value: "0",
4263      type_name: "float",
4264      converter: "ConvertTextStrokeWidth",
4265    },
4266    {
4267      name: "-webkit-transform-origin-x",
4268      property_methods: ["ParseSingleValue"],
4269      interpolable: true,
4270      converter: "ConvertLength",
4271    },
4272    {
4273      name: "-webkit-transform-origin-y",
4274      property_methods: ["ParseSingleValue"],
4275      interpolable: true,
4276      converter: "ConvertLength",
4277    },
4278    {
4279      name: "-webkit-transform-origin-z",
4280      property_methods: ["ParseSingleValue"],
4281      interpolable: true,
4282      converter: "ConvertComputedLength<float>",
4283    },
4284    {
4285      name: "-webkit-user-drag",
4286      property_methods: ["CSSValueFromComputedStyleInternal"],
4287      field_group: "*",
4288      field_template: "keyword",
4289      keywords: ["auto", "none", "element"],
4290      default_value: "auto",
4291    },
4292    {
4293      name: "-webkit-user-modify",
4294      property_methods: ["CSSValueFromComputedStyleInternal"],
4295      inherited: true,
4296      field_group: "*",
4297      field_template: "keyword",
4298      keywords: ["read-only", "read-write", "read-write-plaintext-only"],
4299      default_value: "read-only",
4300    },
4301    {
4302      name: "user-select",
4303      property_methods: ["CSSValueFromComputedStyleInternal"],
4304      inherited: true,
4305      field_group: "*",
4306      field_template: "keyword",
4307      keywords: ["auto", "none", "text", "all"],
4308      typedom_types: ["Keyword"],
4309      default_value: "auto",
4310    },
4311    {
4312      name: "white-space",
4313      property_methods: ["CSSValueFromComputedStyleInternal"],
4314      independent: true,
4315      inherited: true,
4316      field_template: "multi_keyword", // We use a bitflag field due peformance issues
4317      keywords: [
4318        "none", "normal", "pre", "pre-wrap", "pre-line", "nowrap", "-webkit-nowrap", "break-spaces"
4319      ],
4320      typedom_types: ["Keyword"],
4321      default_value: "normal",
4322      valid_for_cue: true,
4323      valid_for_marker: true,
4324    },
4325    {
4326      name: "widows",
4327      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
4328      interpolable: true,
4329      inherited: true,
4330      field_group: "*",
4331      field_template: "primitive",
4332      computed_style_custom_functions: ["setter"],
4333      default_value: "2",
4334      type_name: "short",
4335      typedom_types: ["Number"]
4336    },
4337    {
4338      name: "width",
4339      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
4340      is_descriptor: true,
4341      interpolable: true,
4342      layout_dependent: true,
4343      field_group: "box",
4344      field_template: "<length>",
4345      keywords: ["auto", "fit-content", "min-content", "max-content"],
4346      default_value: "Length()",
4347      typedom_types: ["Keyword", "Length", "Percentage"],
4348      converter: "ConvertLengthSizing",
4349    },
4350    {
4351      name: "will-change",
4352      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
4353      style_builder_custom_functions: ["initial", "inherit", "value"],
4354      keywords: ["auto"],
4355      typedom_types: ["Keyword"]
4356    },
4357    {
4358      name: "word-break",
4359      property_methods: ["CSSValueFromComputedStyleInternal"],
4360      inherited: true,
4361      field_group: "*",
4362      field_template: "keyword",
4363      // Word Break Values. Matches WinIE and CSS3
4364      keywords: ["normal", "break-all", "keep-all", "break-word"],
4365      default_value: "normal",
4366      typedom_types: ["Keyword"]
4367    },
4368    {
4369      name: "word-spacing",
4370      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
4371      interpolable: true,
4372      inherited: true,
4373      converter: "ConvertSpacing",
4374      keywords: ["normal"],
4375      typedom_types: ["normal"],
4376      typedom_types: ["Keyword", "Length"],
4377      valid_for_first_letter: true,
4378    },
4379    {
4380      name: "z-index",
4381      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
4382      interpolable: true,
4383      field_group: "box",
4384      field_template: "primitive",
4385      default_value: "0",
4386      type_name: "int",
4387      computed_style_custom_functions: ["setter"],
4388      style_builder_template: "auto",
4389      keywords: ["auto"],
4390      typedom_types: ["Keyword", "Number"]
4391    },
4392
4393    // CSS logical props
4394    {
4395      name: "inline-size",
4396      property_methods: ["ParseSingleValue"],
4397      layout_dependent: true,
4398      direction_aware_options: {
4399        resolver: "inline",
4400        physical_group: "size",
4401      },
4402      keywords: ["auto"],
4403      typedom_types: ["Keyword", "Length", "Percentage"],
4404    },
4405    {
4406      name: "block-size",
4407      property_methods: ["ParseSingleValue"],
4408      layout_dependent: true,
4409      direction_aware_options: {
4410        resolver: "block",
4411        physical_group: "size",
4412      },
4413      keywords: ["auto"],
4414      typedom_types: ["Keyword", "Length", "Percentage"],
4415    },
4416    {
4417      name: "min-inline-size",
4418      property_methods: ["ParseSingleValue"],
4419      direction_aware_options: {
4420        resolver: "inline",
4421        physical_group: "min-size",
4422      },
4423      typedom_types: ["Length", "Percentage"],
4424    },
4425    {
4426      name: "min-block-size",
4427      property_methods: ["ParseSingleValue"],
4428      direction_aware_options: {
4429        resolver: "block",
4430        physical_group: "min-size",
4431      },
4432      typedom_types: ["Length", "Percentage"],
4433    },
4434    {
4435      name: "max-inline-size",
4436      property_methods: ["ParseSingleValue"],
4437      direction_aware_options: {
4438        resolver: "inline",
4439        physical_group: "max-size",
4440      },
4441      keywords: ["none"],
4442      typedom_types: ["Keyword", "Length", "Percentage"],
4443    },
4444    {
4445      name: "max-block-size",
4446      property_methods: ["ParseSingleValue"],
4447      direction_aware_options: {
4448        resolver: "block",
4449        physical_group: "max-size",
4450      },
4451      keywords: ["none"],
4452      typedom_types: ["Keyword", "Length", "Percentage"],
4453    },
4454    {
4455      name: "margin-inline-start",
4456      layout_dependent: true,
4457      property_methods: ["ParseSingleValue"],
4458      direction_aware_options: {
4459        resolver: "inline-start",
4460        physical_group: "margin",
4461      },
4462      typedom_types: ["Length", "Percentage"],
4463      keywords: ["auto"],
4464      valid_for_first_letter: true,
4465    },
4466    {
4467      name: "margin-inline-end",
4468      layout_dependent: true,
4469      property_methods: ["ParseSingleValue"],
4470      direction_aware_options: {
4471        resolver: "inline-end",
4472        physical_group: "margin",
4473      },
4474      typedom_types: ["Length", "Percentage"],
4475      keywords: ["auto"],
4476      valid_for_first_letter: true,
4477    },
4478    {
4479      name: "margin-block-start",
4480      layout_dependent: true,
4481      property_methods: ["ParseSingleValue"],
4482      direction_aware_options: {
4483        resolver: "block-start",
4484        physical_group: "margin",
4485      },
4486      typedom_types: ["Length", "Percentage"],
4487      keywords: ["auto"],
4488      valid_for_first_letter: true,
4489    },
4490    {
4491      name: "margin-block-end",
4492      layout_dependent: true,
4493      property_methods: ["ParseSingleValue"],
4494      direction_aware_options: {
4495        resolver: "block-end",
4496        physical_group: "margin",
4497      },
4498      typedom_types: ["Length", "Percentage"],
4499      keywords: ["auto"],
4500      valid_for_first_letter: true,
4501    },
4502    {
4503      name: "padding-inline-start",
4504      layout_dependent: true,
4505      property_methods: ["ParseSingleValue"],
4506      direction_aware_options: {
4507        resolver: "inline-start",
4508        physical_group: "padding",
4509      },
4510      typedom_types: ["Length", "Percentage"]
4511    },
4512    {
4513      name: "padding-inline-end",
4514      layout_dependent: true,
4515      property_methods: ["ParseSingleValue"],
4516      direction_aware_options: {
4517        resolver: "inline-end",
4518        physical_group: "padding",
4519      },
4520      typedom_types: ["Length", "Percentage"]
4521    },
4522    {
4523      name: "padding-block-start",
4524      layout_dependent: true,
4525      property_methods: ["ParseSingleValue"],
4526      direction_aware_options: {
4527        resolver: "block-start",
4528        physical_group: "padding",
4529      },
4530      typedom_types: ["Length", "Percentage"]
4531    },
4532    {
4533      name: "padding-block-end",
4534      layout_dependent: true,
4535      property_methods: ["ParseSingleValue"],
4536      direction_aware_options: {
4537        resolver: "block-end",
4538        physical_group: "padding",
4539      },
4540      typedom_types: ["Length", "Percentage"]
4541    },
4542    {
4543      name: "border-inline-start-width",
4544      property_methods: ["ParseSingleValue"],
4545      direction_aware_options: {
4546        resolver: "inline-start",
4547        physical_group: "border-width",
4548      },
4549      valid_for_first_letter: true,
4550    },
4551    {
4552      name: "border-inline-start-style",
4553      direction_aware_options: {
4554        resolver: "inline-start",
4555        physical_group: "border-style",
4556      },
4557      valid_for_first_letter: true,
4558    },
4559    {
4560      name: "border-inline-start-color",
4561      property_methods: ["ParseSingleValue"],
4562      direction_aware_options: {
4563        resolver: "inline-start",
4564        physical_group: "border-color",
4565      },
4566      valid_for_first_letter: true,
4567    },
4568    {
4569      name: "border-inline-end-width",
4570      property_methods: ["ParseSingleValue"],
4571      direction_aware_options: {
4572        resolver: "inline-end",
4573        physical_group: "border-width",
4574      },
4575      valid_for_first_letter: true,
4576    },
4577    {
4578      name: "border-inline-end-style",
4579      direction_aware_options: {
4580        resolver: "inline-end",
4581        physical_group: "border-style",
4582      },
4583      valid_for_first_letter: true,
4584    },
4585    {
4586      name: "border-inline-end-color",
4587      property_methods: ["ParseSingleValue"],
4588      direction_aware_options: {
4589        resolver: "inline-end",
4590        physical_group: "border-color",
4591      },
4592      valid_for_first_letter: true,
4593    },
4594    {
4595      name: "border-block-start-width",
4596      property_methods: ["ParseSingleValue"],
4597      direction_aware_options: {
4598        resolver: "block-start",
4599        physical_group: "border-width",
4600      },
4601      valid_for_first_letter: true,
4602    },
4603    {
4604      name: "border-block-start-style",
4605      direction_aware_options: {
4606        resolver: "block-start",
4607        physical_group: "border-style",
4608      },
4609      valid_for_first_letter: true,
4610    },
4611    {
4612      name: "border-block-start-color",
4613      property_methods: ["ParseSingleValue"],
4614      direction_aware_options: {
4615        resolver: "block-start",
4616        physical_group: "border-color",
4617      },
4618      valid_for_first_letter: true,
4619    },
4620    {
4621      name: "border-block-end-width",
4622      property_methods: ["ParseSingleValue"],
4623      direction_aware_options: {
4624        resolver: "block-end",
4625        physical_group: "border-width",
4626      },
4627      valid_for_first_letter: true,
4628    },
4629    {
4630      name: "border-block-end-style",
4631      direction_aware_options: {
4632        resolver: "block-end",
4633        physical_group: "border-style",
4634      },
4635      valid_for_first_letter: true,
4636    },
4637    {
4638      name: "border-block-end-color",
4639      property_methods: ["ParseSingleValue"],
4640      direction_aware_options: {
4641        resolver: "block-end",
4642        physical_group: "border-color",
4643      },
4644      valid_for_first_letter: true,
4645    },
4646    {
4647      name: "inset-inline-start",
4648      property_methods: ["ParseSingleValue"],
4649      runtime_flag: "CSSLogical",
4650      direction_aware_options: {
4651        resolver: "inline-start",
4652        physical_group: "inset",
4653      },
4654      typedom_types: ["Length", "Percentage"]
4655    },
4656    {
4657      name: "inset-inline-end",
4658      property_methods: ["ParseSingleValue"],
4659      runtime_flag: "CSSLogical",
4660      direction_aware_options: {
4661        resolver: "inline-end",
4662        physical_group: "inset",
4663      },
4664      typedom_types: ["Length", "Percentage"]
4665    },
4666    {
4667      name: "inset-block-start",
4668      property_methods: ["ParseSingleValue"],
4669      runtime_flag: "CSSLogical",
4670      direction_aware_options: {
4671        resolver: "block-start",
4672        physical_group: "inset",
4673      },
4674      typedom_types: ["Length", "Percentage"]
4675    },
4676    {
4677      name: "inset-block-end",
4678      property_methods: ["ParseSingleValue"],
4679      runtime_flag: "CSSLogical",
4680      direction_aware_options: {
4681        resolver: "block-end",
4682        physical_group: "inset",
4683      },
4684      typedom_types: ["Length", "Percentage"]
4685    },
4686
4687    // Non-standard direction aware properties
4688
4689    {
4690      name: "-webkit-border-end-color",
4691      alias_for: "border-inline-end-color",
4692    },
4693    {
4694      name: "-webkit-border-end-style",
4695      alias_for: "border-inline-end-style",
4696    },
4697    {
4698      name: "-webkit-border-end-width",
4699      alias_for: "border-inline-end-width",
4700    },
4701    {
4702      name: "-webkit-border-start-color",
4703      alias_for: "border-inline-start-color",
4704    },
4705    {
4706      name: "-webkit-border-start-style",
4707      alias_for: "border-inline-start-style",
4708    },
4709    {
4710      name: "-webkit-border-start-width",
4711      alias_for: "border-inline-start-width",
4712    },
4713    {
4714      name: "-webkit-border-before-color",
4715      alias_for: "border-block-start-color",
4716    },
4717    {
4718      name: "-webkit-border-before-style",
4719      alias_for: "border-block-start-style",
4720    },
4721    {
4722      name: "-webkit-border-before-width",
4723      alias_for: "border-block-start-width",
4724    },
4725    {
4726      name: "-webkit-border-after-color",
4727      alias_for: "border-block-end-color",
4728    },
4729    {
4730      name: "-webkit-border-after-style",
4731      alias_for: "border-block-end-style",
4732    },
4733    {
4734      name: "-webkit-border-after-width",
4735      alias_for: "border-block-end-width",
4736    },
4737    {
4738      name: "-webkit-margin-end",
4739      alias_for: "margin-inline-end",
4740    },
4741    {
4742      name: "-webkit-margin-start",
4743      alias_for: "margin-inline-start",
4744    },
4745    {
4746      name: "-webkit-margin-before",
4747      alias_for: "margin-block-start",
4748    },
4749    {
4750      name: "-webkit-margin-after",
4751      alias_for: "margin-block-end",
4752    },
4753    {
4754      name: "-webkit-padding-end",
4755      alias_for: "padding-inline-end",
4756    },
4757    {
4758      name: "-webkit-padding-start",
4759      alias_for: "padding-inline-start",
4760    },
4761    {
4762      name: "-webkit-padding-before",
4763      alias_for: "padding-block-start",
4764    },
4765    {
4766      name: "-webkit-padding-after",
4767      alias_for: "padding-block-end",
4768    },
4769    {
4770      name: "-webkit-logical-width",
4771      alias_for: "inline-size",
4772    },
4773    {
4774      name: "-webkit-logical-height",
4775      alias_for: "block-size",
4776    },
4777    {
4778      name: "-webkit-min-logical-width",
4779      alias_for: "min-inline-size",
4780    },
4781    {
4782      name: "-webkit-min-logical-height",
4783      alias_for: "min-block-size",
4784    },
4785    {
4786      name: "-webkit-max-logical-width",
4787      alias_for: "max-inline-size",
4788    },
4789    {
4790      name: "-webkit-max-logical-height",
4791      alias_for: "max-block-size",
4792    },
4793
4794    // Properties that we ignore in the StyleBuilder.
4795    // TODO(timloh): This seems wrong, most of these shouldn't reach the
4796    // StyleBuilder
4797    {
4798      name: "all",
4799      affected_by_all: false,
4800      style_builder_template: "empty",
4801    },
4802    {
4803      name: "-webkit-font-size-delta",
4804      property_methods: ["ParseSingleValue"],
4805      style_builder_template: "empty",
4806    },
4807    {
4808      name: "-webkit-text-decorations-in-effect",
4809      property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
4810      inherited: true,
4811      style_builder_template: "empty",
4812    },
4813
4814    // Descriptor only names
4815    {
4816      name: "font-display",
4817      is_descriptor: true,
4818      is_property: false,
4819    },
4820    {
4821      name: "max-zoom",
4822      is_descriptor: true,
4823      is_property: false,
4824    },
4825    {
4826      name: "min-zoom",
4827      is_descriptor: true,
4828      is_property: false,
4829    },
4830    {
4831      name: "orientation",
4832      is_descriptor: true,
4833      is_property: false,
4834    },
4835    {
4836      name: "src",
4837      is_descriptor: true,
4838      is_property: false,
4839    },
4840    {
4841      name: "unicode-range",
4842      is_descriptor: true,
4843      is_property: false,
4844    },
4845    {
4846      name: "user-zoom",
4847      is_descriptor: true,
4848      is_property: false,
4849    },
4850    {
4851      name: "viewport-fit",
4852      is_descriptor: true,
4853      is_property: false,
4854      runtime_flag: "DisplayCutoutAPI",
4855    },
4856    {
4857      name: "syntax",
4858      is_descriptor: true,
4859      is_property: false,
4860      runtime_flag: "CSSVariables2AtProperty",
4861    },
4862    {
4863      name: "initial-value",
4864      is_descriptor: true,
4865      is_property: false,
4866      runtime_flag: "CSSVariables2AtProperty",
4867    },
4868    {
4869      name: "inherits",
4870      is_descriptor: true,
4871      is_property: false,
4872      runtime_flag: "CSSVariables2AtProperty",
4873    },
4874
4875    // Shorthands
4876    {
4877      name: "animation",
4878      longhands: [
4879        "animation-duration", "animation-timing-function", "animation-delay",
4880        "animation-iteration-count", "animation-direction",
4881        "animation-fill-mode", "animation-play-state", "animation-name"
4882      ],
4883      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
4884    },
4885    {
4886      name: "background",
4887      longhands: [
4888        "background-image", "background-position-x", "background-position-y",
4889        "background-size", "background-repeat-x", "background-repeat-y",
4890        "background-attachment", "background-origin", "background-clip",
4891        "background-color"
4892      ],
4893      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
4894    },
4895    {
4896      name: "background-position",
4897      longhands: ["background-position-x", "background-position-y"],
4898      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
4899    },
4900    {
4901      name: "background-repeat",
4902      longhands: ["background-repeat-x", "background-repeat-y"],
4903      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
4904    },
4905    {
4906      name: "border",
4907      longhands: [
4908        "border-top-color", "border-top-style", "border-top-width",
4909        "border-right-color", "border-right-style", "border-right-width",
4910        "border-bottom-color", "border-bottom-style", "border-bottom-width",
4911        "border-left-color", "border-left-style", "border-left-width",
4912        "border-image-source", "border-image-slice", "border-image-width",
4913        "border-image-outset", "border-image-repeat"
4914      ],
4915      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
4916    },
4917    {
4918      name: "border-block",
4919      longhands: [
4920        "border-block-start-color", "border-block-start-style", "border-block-start-width",
4921        "border-block-end-color", "border-block-end-style", "border-block-end-width"
4922      ],
4923      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
4924      runtime_flag: "CSSLogical",
4925    },
4926    {
4927      name: "border-block-color",
4928      longhands: ["border-block-start-color", "border-block-end-color"],
4929      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
4930      runtime_flag: "CSSLogical",
4931    },
4932    {
4933      name: "border-block-end",
4934      longhands: [
4935        "border-block-end-width", "border-block-end-style",
4936        "border-block-end-color"
4937      ],
4938      property_methods: ["ParseShorthand"],
4939      direction_aware_options: {
4940        resolver: "block-end",
4941        physical_group: "border",
4942      },
4943    },
4944    {
4945      name: "border-block-start",
4946      longhands: [
4947        "border-block-start-width", "border-block-start-style",
4948        "border-block-start-color"
4949      ],
4950      property_methods: ["ParseShorthand"],
4951      direction_aware_options: {
4952        resolver: "block-start",
4953        physical_group: "border",
4954      },
4955    },
4956    {
4957      name: "border-block-style",
4958      longhands: ["border-block-start-style", "border-block-end-style"],
4959      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
4960      runtime_flag: "CSSLogical",
4961    },
4962    {
4963      name: "border-block-width",
4964      longhands: ["border-block-start-width", "border-block-end-width"],
4965      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
4966      runtime_flag: "CSSLogical",
4967    },
4968    {
4969      name: "border-bottom",
4970      longhands: [
4971        "border-bottom-width", "border-bottom-style", "border-bottom-color"
4972      ],
4973      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
4974    },
4975    {
4976      name: "border-color",
4977      longhands: [
4978        "border-top-color", "border-right-color", "border-bottom-color",
4979        "border-left-color"
4980      ],
4981      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
4982    },
4983    {
4984      name: "border-image",
4985      longhands: [
4986        "border-image-source", "border-image-slice", "border-image-width",
4987        "border-image-outset", "border-image-repeat"
4988      ],
4989      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
4990    },
4991    {
4992      name: "border-inline",
4993      longhands: [
4994        "border-inline-start-color", "border-inline-start-style", "border-inline-start-width",
4995        "border-inline-end-color", "border-inline-end-style", "border-inline-end-width"
4996      ],
4997      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
4998      runtime_flag: "CSSLogical",
4999    },
5000    {
5001      name: "border-inline-color",
5002      longhands: ["border-inline-start-color", "border-inline-end-color"],
5003      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5004      runtime_flag: "CSSLogical",
5005    },
5006    {
5007      name: "border-inline-end",
5008      longhands: [
5009        "border-inline-end-width", "border-inline-end-style",
5010        "border-inline-end-color"
5011      ],
5012      property_methods: ["ParseShorthand"],
5013      direction_aware_options: {
5014        resolver: "inline-end",
5015        physical_group: "border",
5016      },
5017    },
5018    {
5019      name: "border-inline-start",
5020      longhands: [
5021        "border-inline-start-width", "border-inline-start-style",
5022        "border-inline-start-color"
5023      ],
5024      property_methods: ["ParseShorthand"],
5025      direction_aware_options: {
5026        resolver: "inline-start",
5027        physical_group: "border",
5028      },
5029    },
5030    {
5031      name: "border-inline-style",
5032      longhands: ["border-inline-start-style", "border-inline-end-style"],
5033      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5034      runtime_flag: "CSSLogical",
5035    },
5036    {
5037      name: "border-inline-width",
5038      longhands: ["border-inline-start-width", "border-inline-end-width"],
5039      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5040      runtime_flag: "CSSLogical",
5041    },
5042    {
5043      name: "border-left",
5044      longhands: [
5045        "border-left-width", "border-left-style", "border-left-color"
5046      ],
5047      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5048    },
5049    {
5050      name: "border-radius",
5051      longhands: [
5052        "border-top-left-radius", "border-top-right-radius",
5053        "border-bottom-right-radius", "border-bottom-left-radius"
5054      ],
5055      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5056    },
5057    {
5058      name: "border-right",
5059      longhands: [
5060        "border-right-width", "border-right-style", "border-right-color"
5061      ],
5062      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5063    },
5064    {
5065      name: "border-spacing",
5066      longhands: [
5067        "-webkit-border-horizontal-spacing", "-webkit-border-vertical-spacing"
5068      ],
5069      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5070    },
5071    {
5072      name: "border-style",
5073      longhands: [
5074        "border-top-style", "border-right-style", "border-bottom-style",
5075        "border-left-style"
5076      ],
5077      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5078      keywords: ["none"],
5079    },
5080    {
5081      name: "border-top",
5082      longhands: ["border-top-width", "border-top-style", "border-top-color"],
5083      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5084    },
5085    {
5086      name: "border-width",
5087      longhands: [
5088        "border-top-width", "border-right-width", "border-bottom-width",
5089        "border-left-width"
5090      ],
5091      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5092    },
5093    {
5094      name: "flex",
5095      longhands: ["flex-grow", "flex-shrink", "flex-basis"],
5096      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5097    },
5098    {
5099      name: "flex-flow",
5100      longhands: ["flex-direction", "flex-wrap"],
5101      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5102    },
5103    {
5104      name: "font",
5105      longhands: [
5106        "font-style", "font-variant-ligatures", "font-variant-caps",
5107        "font-variant-numeric", "font-variant-east-asian", "font-weight",
5108        "font-stretch", "font-size", "line-height", "font-family"
5109      ],
5110      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5111    },
5112    {
5113      name: "font-variant",
5114      longhands: [
5115        "font-variant-ligatures", "font-variant-caps",
5116        "font-variant-numeric", "font-variant-east-asian"
5117      ],
5118      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5119      is_descriptor: true,
5120    },
5121    {
5122      name: "grid",
5123      longhands: [
5124        "grid-template-rows", "grid-template-columns", "grid-template-areas",
5125        "grid-auto-flow", "grid-auto-rows", "grid-auto-columns"
5126      ],
5127      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5128      layout_dependent: true,
5129    },
5130    {
5131      name: "place-content",
5132      longhands: ["align-content", "justify-content"],
5133      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5134    },
5135    {
5136      name: "place-items",
5137      longhands: ["align-items", "justify-items"],
5138      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5139    },
5140    {
5141      name: "place-self",
5142      longhands: ["align-self", "justify-self"],
5143      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5144    },
5145    {
5146      name: "grid-area",
5147      longhands: [
5148        "grid-row-start", "grid-column-start", "grid-row-end",
5149        "grid-column-end"
5150      ],
5151      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5152    },
5153    {
5154      name: "grid-column",
5155      longhands: ["grid-column-start", "grid-column-end"],
5156      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5157    },
5158    {
5159      name: "grid-column-gap",
5160      longhands: ["column-gap"],
5161      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5162    },
5163    {
5164      name: "grid-row-gap",
5165      longhands: ["row-gap"],
5166      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5167    },
5168    {
5169      name: "gap",
5170      longhands: ["row-gap", "column-gap"],
5171      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5172    },
5173    {
5174      name: "grid-gap",
5175      longhands: ["row-gap", "column-gap"],
5176      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5177    },
5178    {
5179      name: "grid-row",
5180      longhands: ["grid-row-start", "grid-row-end"],
5181      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5182    },
5183    {
5184      name: "grid-template",
5185      longhands: [
5186        "grid-template-rows", "grid-template-columns", "grid-template-areas"
5187      ],
5188      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5189      layout_dependent: true,
5190    },
5191    {
5192      name: "inset",
5193      longhands: ["top", "right", "bottom", "left"],
5194      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5195      runtime_flag: "CSSLogical",
5196    },
5197    {
5198      name: "inset-block",
5199      longhands: ["inset-block-start", "inset-block-end"],
5200      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5201      runtime_flag: "CSSLogical",
5202    },
5203    {
5204      name: "inset-inline",
5205      longhands: ["inset-inline-start", "inset-inline-end"],
5206      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5207      runtime_flag: "CSSLogical",
5208    },
5209    {
5210      name: "list-style",
5211      longhands: ["list-style-position", "list-style-image", "list-style-type"],
5212      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5213    },
5214    {
5215      name: "margin",
5216      longhands: ["margin-top", "margin-right", "margin-bottom", "margin-left"],
5217      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5218      layout_dependent: true,
5219    },
5220    {
5221      name: "margin-block",
5222      longhands: ["margin-block-start", "margin-block-end"],
5223      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5224      runtime_flag: "CSSLogical",
5225    },
5226    {
5227      name: "margin-inline",
5228      longhands: ["margin-inline-start", "margin-inline-end"],
5229      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5230      runtime_flag: "CSSLogical",
5231    },
5232    {
5233      name: "marker",
5234      longhands: ["marker-start", "marker-mid", "marker-end"],
5235      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5236      svg: true,
5237    },
5238    {
5239      name: "offset",
5240      longhands: [
5241        "offset-position", "offset-path", "offset-distance", "offset-rotate",
5242        "offset-anchor"
5243      ],
5244      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5245    },
5246    {
5247      name: "outline",
5248      longhands: ["outline-color", "outline-style", "outline-width"],
5249      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5250    },
5251    {
5252      name: "overflow",
5253      longhands: ["overflow-x", "overflow-y"],
5254      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5255    },
5256    {
5257      name: "overscroll-behavior",
5258      longhands: ["overscroll-behavior-x", "overscroll-behavior-y"],
5259      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5260    },
5261    {
5262      name: "padding",
5263      longhands: [
5264        "padding-top", "padding-right", "padding-bottom", "padding-left"
5265      ],
5266      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5267      layout_dependent: true,
5268    },
5269    {
5270      name: "padding-block",
5271      longhands: ["padding-block-start", "padding-block-end"],
5272      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5273      runtime_flag: "CSSLogical",
5274    },
5275    {
5276      name: "padding-inline",
5277      longhands: ["padding-inline-start", "padding-inline-end"],
5278      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5279      runtime_flag: "CSSLogical",
5280    },
5281    {
5282      name: "page-break-after",
5283      longhands: ["break-after"],
5284      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5285    },
5286    {
5287      name: "page-break-before",
5288      longhands: ["break-before"],
5289      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5290    },
5291    {
5292      name: "page-break-inside",
5293      longhands: ["break-inside"],
5294      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5295    },
5296    {
5297      name: "scroll-margin",
5298      longhands: ["scroll-margin-top", "scroll-margin-right", "scroll-margin-bottom", "scroll-margin-left"],
5299      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5300    },
5301    {
5302      name: "scroll-margin-block",
5303      longhands: ["scroll-margin-block-start", "scroll-margin-block-end"],
5304      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5305    },
5306    {
5307      name: "scroll-margin-inline",
5308      longhands: ["scroll-margin-inline-start", "scroll-margin-inline-end"],
5309      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5310    },
5311    {
5312      name: "scroll-padding",
5313      longhands: [
5314        "scroll-padding-top", "scroll-padding-right", "scroll-padding-bottom",
5315        "scroll-padding-left"
5316      ],
5317      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5318    },
5319    {
5320      name: "scroll-padding-block",
5321      longhands: ["scroll-padding-block-start", "scroll-padding-block-end"],
5322      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5323    },
5324    {
5325      name: "scroll-padding-inline",
5326      longhands: ["scroll-padding-inline-start", "scroll-padding-inline-end"],
5327      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5328    },
5329    {
5330      name: "text-decoration",
5331      longhands: ["text-decoration-line", "text-decoration-style", "text-decoration-color"],
5332      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5333    },
5334    {
5335      name: "transition",
5336      longhands: [
5337        "transition-property", "transition-duration",
5338        "transition-timing-function", "transition-delay"
5339      ],
5340      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5341    },
5342    {
5343      name: "-webkit-border-after",
5344      alias_for: "border-block-end",
5345    },
5346    {
5347      name: "-webkit-border-before",
5348      alias_for: "border-block-start",
5349    },
5350    {
5351      name: "-webkit-border-end",
5352      alias_for: "border-inline-end",
5353    },
5354    {
5355      name: "-webkit-border-start",
5356      alias_for: "border-inline-start",
5357    },
5358    {
5359      name: "-webkit-column-break-after",
5360      longhands: ["break-after"],
5361      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5362    },
5363    {
5364      name: "-webkit-column-break-before",
5365      longhands: ["break-before"],
5366      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5367    },
5368    {
5369      name: "-webkit-column-break-inside",
5370      longhands: ["break-inside"],
5371      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5372    },
5373    {
5374      name: "column-rule",
5375      longhands: [
5376        "column-rule-width", "column-rule-style", "column-rule-color"
5377      ],
5378      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5379    },
5380    {
5381      name: "columns",
5382      longhands: ["column-width", "column-count"],
5383      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5384    },
5385    {
5386      name: "-webkit-mask",
5387      longhands: [
5388        "-webkit-mask-image", "-webkit-mask-position-x",
5389        "-webkit-mask-position-y", "-webkit-mask-size", "-webkit-mask-repeat-x",
5390        "-webkit-mask-repeat-y", "-webkit-mask-origin", "-webkit-mask-clip"
5391      ],
5392      property_methods: ["ParseShorthand"],
5393    },
5394    {
5395      name: "-webkit-mask-box-image",
5396      longhands: [
5397        "-webkit-mask-box-image-source", "-webkit-mask-box-image-slice",
5398        "-webkit-mask-box-image-width", "-webkit-mask-box-image-outset",
5399        "-webkit-mask-box-image-repeat"
5400      ],
5401      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5402    },
5403    {
5404      name: "-webkit-mask-position",
5405      longhands: ["-webkit-mask-position-x", "-webkit-mask-position-y"],
5406      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5407    },
5408    {
5409      name: "-webkit-mask-repeat",
5410      longhands: ["-webkit-mask-repeat-x", "-webkit-mask-repeat-y"],
5411      property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
5412    },
5413    {
5414      name: "-webkit-text-emphasis",
5415      longhands: ["-webkit-text-emphasis-style", "-webkit-text-emphasis-color"],
5416      property_methods: ["ParseShorthand"],
5417    },
5418    {
5419      name: "-webkit-text-stroke",
5420      longhands: ["-webkit-text-stroke-width", "-webkit-text-stroke-color"],
5421      property_methods: ["ParseShorthand"],
5422    },
5423
5424    // Visited properties.
5425    {
5426      name: "-internal-visited-color",
5427      visited_property_for: "color",
5428      property_methods: ["ParseSingleValue", "ColorIncludingFallback"],
5429      inherited: true,
5430      field_group: "inherited",
5431      field_template: "external",
5432      include_paths: ["third_party/blink/renderer/platform/graphics/color.h"],
5433      default_value: "Color::kBlack",
5434      type_name: "Color",
5435      computed_style_custom_functions: ["getter", "setter"],
5436      style_builder_custom_functions: ["initial", "inherit", "value"],
5437      priority: "High",
5438      affected_by_forced_colors: true,
5439      valid_for_first_letter: true,
5440      valid_for_cue: true,
5441      valid_for_marker: true,
5442    },
5443    {
5444      name: "-internal-visited-caret-color",
5445      visited_property_for: "caret-color",
5446      property_methods: ["ParseSingleValue", "ColorIncludingFallback"],
5447      inherited: true,
5448      field_group: "*",
5449      field_template: "external",
5450      include_paths: ["third_party/blink/renderer/platform/graphics/color.h"],
5451      default_value: "Color()",
5452      type_name: "Color",
5453      converter: "ConvertStyleAutoColor",
5454      computed_style_custom_functions: ["getter", "setter"],
5455      style_builder_template: "visited_color",
5456      style_builder_template_args: {
5457        initial_color: "StyleAutoColor::AutoColor",
5458      },
5459    },
5460    {
5461      name: "-internal-visited-column-rule-color",
5462      visited_property_for: "column-rule-color",
5463      property_methods: ["ParseSingleValue", "ColorIncludingFallback"],
5464      field_group: "*->multi-col",
5465      field_template: "external",
5466      include_paths: ["third_party/blink/renderer/core/css/style_color.h"],
5467      default_value: "StyleColor::CurrentColor()",
5468      type_name: "StyleColor",
5469      computed_style_custom_functions: ["getter","setter"],
5470      converter: "ConvertStyleColor",
5471      style_builder_template: "visited_color",
5472      affected_by_forced_colors: true,
5473    },
5474    {
5475      name: "-internal-visited-background-color",
5476      visited_property_for: "background-color",
5477      property_methods: ["ParseSingleValue", "ColorIncludingFallback"],
5478      field_group: "*",
5479      field_template: "external",
5480      include_paths: ["third_party/blink/renderer/core/css/style_color.h"],
5481      default_value: "StyleColor(Color::kTransparent)",
5482      type_name: "StyleColor",
5483      computed_style_custom_functions: ["getter", "setter"],
5484      converter: "ConvertStyleColor",
5485      style_builder_template: "visited_color",
5486      style_builder_template_args: {
5487        initial_color: "ComputedStyleInitialValues::InitialBackgroundColor",
5488      },
5489      affected_by_forced_colors: true,
5490      valid_for_first_letter: true,
5491      valid_for_cue: true,
5492    },
5493    {
5494      name: "-internal-visited-border-left-color",
5495      visited_property_for: "border-left-color",
5496      property_methods: ["ParseSingleValue", "ColorIncludingFallback"],
5497      field_group: "*",
5498      field_template: "external",
5499      include_paths: ["third_party/blink/renderer/core/css/style_color.h"],
5500      default_value: "StyleColor::CurrentColor()",
5501      type_name: "StyleColor",
5502      computed_style_custom_functions: ["getter", "setter"],
5503      converter: "ConvertStyleColor",
5504      style_builder_template: "visited_color",
5505      affected_by_forced_colors: true,
5506      valid_for_first_letter: true,
5507    },
5508    {
5509      name: "-internal-visited-border-right-color",
5510      visited_property_for: "border-right-color",
5511      property_methods: ["ParseSingleValue", "ColorIncludingFallback"],
5512      field_group: "*",
5513      field_template: "external",
5514      include_paths: ["third_party/blink/renderer/core/css/style_color.h"],
5515      default_value: "StyleColor::CurrentColor()",
5516      type_name: "StyleColor",
5517      computed_style_custom_functions: ["getter", "setter"],
5518      converter: "ConvertStyleColor",
5519      style_builder_template: "visited_color",
5520      affected_by_forced_colors: true,
5521      valid_for_first_letter: true,
5522    },
5523    {
5524      name: "-internal-visited-border-top-color",
5525      visited_property_for: "border-top-color",
5526      property_methods: ["ParseSingleValue", "ColorIncludingFallback"],
5527      field_group: "*",
5528      field_template: "external",
5529      include_paths: ["third_party/blink/renderer/core/css/style_color.h"],
5530      default_value: "StyleColor::CurrentColor()",
5531      type_name: "StyleColor",
5532      computed_style_custom_functions: ["getter", "setter"],
5533      converter: "ConvertStyleColor",
5534      style_builder_template: "visited_color",
5535      affected_by_forced_colors: true,
5536      valid_for_first_letter: true,
5537    },
5538    {
5539      name: "-internal-visited-border-bottom-color",
5540      visited_property_for: "border-bottom-color",
5541      property_methods: ["ParseSingleValue", "ColorIncludingFallback"],
5542      field_group: "*",
5543      field_template: "external",
5544      include_paths: ["third_party/blink/renderer/core/css/style_color.h"],
5545      default_value: "StyleColor::CurrentColor()",
5546      type_name: "StyleColor",
5547      computed_style_custom_functions: ["getter", "setter"],
5548      converter: "ConvertStyleColor",
5549      style_builder_template: "visited_color",
5550      affected_by_forced_colors: true,
5551      valid_for_first_letter: true,
5552    },
5553    {
5554      name: "-internal-visited-border-inline-start-color",
5555      visited_property_for: "border-inline-start-color",
5556      property_methods: ["ParseSingleValue"],
5557      direction_aware_options: {
5558        resolver: "inline-start",
5559        physical_group: "visited-border-color",
5560      },
5561      valid_for_first_letter: true,
5562    },
5563    {
5564      name: "-internal-visited-border-inline-end-color",
5565      visited_property_for: "border-inline-end-color",
5566      property_methods: ["ParseSingleValue"],
5567      direction_aware_options: {
5568        resolver: "inline-end",
5569        physical_group: "visited-border-color",
5570      },
5571      valid_for_first_letter: true,
5572    },
5573    {
5574      name: "-internal-visited-border-block-start-color",
5575      visited_property_for: "border-block-start-color",
5576      property_methods: ["ParseSingleValue"],
5577      direction_aware_options: {
5578        resolver: "block-start",
5579        physical_group: "visited-border-color",
5580      },
5581      valid_for_first_letter: true,
5582    },
5583    {
5584      name: "-internal-visited-border-block-end-color",
5585      visited_property_for: "border-block-end-color",
5586      property_methods: ["ParseSingleValue"],
5587      direction_aware_options: {
5588        resolver: "block-end",
5589        physical_group: "visited-border-color",
5590      },
5591      valid_for_first_letter: true,
5592    },
5593    {
5594      name: "-internal-visited-fill",
5595      visited_property_for: "fill",
5596      property_methods: ["ParseSingleValue"],
5597      inherited: true,
5598      svg: true,
5599      initial: "InitialFillPaint",
5600      setter: "SetInternalVisitedFillPaint",
5601      getter: "FillPaint",
5602      converter: "ConvertSVGPaint",
5603      affected_by_forced_colors: true,
5604    },
5605    {
5606      name: "-internal-visited-outline-color",
5607      visited_property_for: "outline-color",
5608      property_methods: ["ParseSingleValue", "ColorIncludingFallback"],
5609      field_group: "*",
5610      field_template: "external",
5611      include_paths: ["third_party/blink/renderer/core/css/style_color.h"],
5612      default_value: "StyleColor::CurrentColor()",
5613      type_name: "StyleColor",
5614      computed_style_custom_functions: ["getter", "setter"],
5615      converter: "ConvertStyleColor",
5616      style_builder_template: "visited_color",
5617      affected_by_forced_colors: true,
5618      valid_for_cue: true,
5619    },
5620    {
5621      name: "-internal-visited-stroke",
5622      visited_property_for: "stroke",
5623      property_methods: ["ParseSingleValue"],
5624      inherited: true,
5625      svg: true,
5626      initial: "InitialStrokePaint",
5627      setter: "SetInternalVisitedStrokePaint",
5628      getter: "StrokePaint",
5629      converter: "ConvertSVGPaint",
5630      affected_by_forced_colors: true,
5631    },
5632    {
5633      name: "-internal-visited-text-decoration-color",
5634      visited_property_for: "text-decoration-color",
5635      property_methods: ["ParseSingleValue", "ColorIncludingFallback"],
5636      field_group: "*",
5637      field_template: "external",
5638      include_paths: ["third_party/blink/renderer/core/css/style_color.h"],
5639      default_value: "StyleColor::CurrentColor()",
5640      type_name: "StyleColor",
5641      computed_style_custom_functions: ["getter", "setter"],
5642      converter: "ConvertStyleColor",
5643      style_builder_template: "visited_color",
5644      affected_by_forced_colors: true,
5645      valid_for_first_letter: true,
5646      valid_for_cue: true,
5647    },
5648    {
5649      name: "-internal-visited-text-emphasis-color",
5650      visited_property_for: "-webkit-text-emphasis-color",
5651      property_methods: ["ParseSingleValue", "ColorIncludingFallback"],
5652      inherited: true,
5653      field_group: "*",
5654      field_template: "external",
5655      include_paths: ["third_party/blink/renderer/platform/graphics/color.h"],
5656      default_value: "Color()",
5657      type_name: "Color",
5658      computed_style_custom_functions: ["getter", "setter"],
5659      converter: "ConvertStyleColor",
5660      style_builder_template: "visited_color",
5661      style_builder_template_args: {
5662        initial_color: "StyleColor::CurrentColor",
5663      },
5664      affected_by_forced_colors: true,
5665    },
5666    {
5667      name: "-internal-visited-text-fill-color",
5668      visited_property_for: "-webkit-text-fill-color",
5669      property_methods: ["ParseSingleValue", "ColorIncludingFallback"],
5670      inherited: true,
5671      field_group: "*",
5672      field_template: "external",
5673      include_paths: ["third_party/blink/renderer/platform/graphics/color.h"],
5674      default_value: "Color()",
5675      type_name: "Color",
5676      computed_style_custom_functions: ["getter", "setter"],
5677      converter: "ConvertStyleColor",
5678      style_builder_template: "visited_color",
5679      style_builder_template_args: {
5680        initial_color: "StyleColor::CurrentColor",
5681      },
5682    },
5683    {
5684      name: "-internal-visited-text-stroke-color",
5685      visited_property_for: "-webkit-text-stroke-color",
5686      property_methods: ["ParseSingleValue", "ColorIncludingFallback"],
5687      inherited: true,
5688      field_group: "*",
5689      field_template: "external",
5690      include_paths: ["third_party/blink/renderer/platform/graphics/color.h"],
5691      default_value: "Color()",
5692      type_name: "Color",
5693      computed_style_custom_functions: ["getter", "setter"],
5694      converter: "ConvertStyleColor",
5695      style_builder_template: "visited_color",
5696      style_builder_template_args: {
5697        initial_color: "StyleColor::CurrentColor",
5698      },
5699    },
5700    {
5701      name: "-internal-effective-zoom",
5702      property_methods: ["ParseSingleValue"],
5703      inherited: true,
5704      field_template: "primitive",
5705      type_name: "float",
5706      default_value: "1.0f",
5707      field_group: "*",
5708      priority: "High",
5709      style_builder_custom_functions: ["initial", "inherit", "value"],
5710      surrogate_for: "zoom",
5711    },
5712
5713    // Name: -internal-empty-line-height:
5714    // Value: none | fabricated
5715    //    If the element is inline or contains visible text, this property has
5716    //    no effect.
5717    //
5718    // 'none'
5719    //   The box's intrinsic height is 0, and it defines no baseline.
5720    // 'fabricated'
5721    //   The box has intrinsic height and baseline, computed from the current
5722    //   font metrics.
5723    {
5724      name: "-internal-empty-line-height",
5725      property_methods: ["ParseSingleValue" ],
5726      inherited: false,
5727      field_group: "*",
5728      field_template: "primitive",
5729      type_name: "bool",
5730      default_value: "false",
5731      name_for_methods: "HasLineIfEmpty",
5732      converter: "ConvertInternalEmptyLineHeight",
5733    },
5734
5735    // Aliases; these map to the same CSSPropertyID
5736    {
5737      name: "-epub-caption-side",
5738      alias_for: "caption-side",
5739    },
5740    {
5741      name: "-epub-text-combine",
5742      alias_for: "-webkit-text-combine",
5743    },
5744    {
5745      name: "-epub-text-emphasis",
5746      alias_for: "-webkit-text-emphasis",
5747    },
5748    {
5749      name: "-epub-text-emphasis-color",
5750      alias_for: "-webkit-text-emphasis-color",
5751    },
5752    {
5753      name: "-epub-text-emphasis-style",
5754      alias_for: "-webkit-text-emphasis-style",
5755    },
5756    {
5757      name: "-epub-text-orientation",
5758      alias_for: "-webkit-text-orientation",
5759    },
5760    {
5761      name: "-epub-text-transform",
5762      alias_for: "text-transform",
5763    },
5764    {
5765      name: "-epub-word-break",
5766      alias_for: "word-break",
5767    },
5768    {
5769      name: "-epub-writing-mode",
5770      alias_for: "-webkit-writing-mode",
5771    },
5772    {
5773      name: "-webkit-align-content",
5774      alias_for: "align-content",
5775    },
5776    {
5777      name: "-webkit-align-items",
5778      alias_for: "align-items",
5779    },
5780    {
5781      name: "-webkit-align-self",
5782      alias_for: "align-self",
5783    },
5784    {
5785      name: "-webkit-animation",
5786      alias_for: "animation",
5787    },
5788    {
5789      name: "-webkit-animation-delay",
5790      alias_for: "animation-delay",
5791    },
5792    {
5793      name: "-webkit-animation-direction",
5794      alias_for: "animation-direction",
5795    },
5796    {
5797      name: "-webkit-animation-duration",
5798      alias_for: "animation-duration",
5799    },
5800    {
5801      name: "-webkit-animation-fill-mode",
5802      alias_for: "animation-fill-mode",
5803    },
5804    {
5805      name: "-webkit-animation-iteration-count",
5806      alias_for: "animation-iteration-count",
5807    },
5808    {
5809      name: "-webkit-animation-name",
5810      alias_for: "animation-name",
5811    },
5812    {
5813      name: "-webkit-animation-play-state",
5814      alias_for: "animation-play-state",
5815    },
5816    {
5817      name: "-webkit-animation-timing-function",
5818      alias_for: "animation-timing-function",
5819    },
5820    {
5821      name: "-webkit-backface-visibility",
5822      alias_for: "backface-visibility",
5823    },
5824    // -webkit-background-clip accepts "content", "padding", and "border" values
5825    // See crbug.com/604023
5826    {
5827      name: "-webkit-background-clip",
5828      alias_for: "background-clip",
5829    },
5830    // -webkit-background-origin accepts "content", "padding", and "border"
5831    // values. See crbug.com/604023
5832    {
5833      name: "-webkit-background-origin",
5834      alias_for: "background-origin"
5835    },
5836    // "-webkit-background-size: 10px" behaves as "background-size: 10px 10px"
5837    {
5838      name: "-webkit-background-size",
5839      alias_for: "background-size",
5840    },
5841    {
5842      name: "-webkit-border-bottom-left-radius",
5843      alias_for: "border-bottom-left-radius",
5844    },
5845    {
5846      name: "-webkit-border-bottom-right-radius",
5847      alias_for: "border-bottom-right-radius",
5848    },
5849    // "-webkit-border-radius: 1px 2px" behaves as "border-radius: 1px / 2px"
5850    {
5851      name: "-webkit-border-radius",
5852      alias_for: "border-radius",
5853    },
5854    {
5855      name: "-webkit-border-top-left-radius",
5856      alias_for: "border-top-left-radius",
5857    },
5858    {
5859      name: "-webkit-border-top-right-radius",
5860      alias_for: "border-top-right-radius",
5861    },
5862    {
5863      name: "-webkit-box-shadow",
5864      alias_for: "box-shadow",
5865    },
5866    {
5867      name: "-webkit-box-sizing",
5868      alias_for: "box-sizing",
5869    },
5870    {
5871      name: "-webkit-clip-path",
5872      alias_for: "clip-path",
5873    },
5874    {
5875      name: "-webkit-column-count",
5876      alias_for: "column-count",
5877    },
5878    {
5879      name: "-webkit-column-gap",
5880      alias_for: "column-gap",
5881    },
5882    {
5883      name: "-webkit-column-rule",
5884      alias_for: "column-rule",
5885    },
5886    {
5887      name: "-webkit-column-rule-color",
5888      alias_for: "column-rule-color",
5889    },
5890    {
5891      name: "-webkit-column-rule-style",
5892      alias_for: "column-rule-style",
5893    },
5894    {
5895      name: "-webkit-column-rule-width",
5896      alias_for: "column-rule-width",
5897    },
5898    {
5899      name: "-webkit-column-span",
5900      alias_for: "column-span",
5901    },
5902    {
5903      name: "-webkit-column-width",
5904      alias_for: "column-width",
5905    },
5906    {
5907      name: "-webkit-columns",
5908      alias_for: "columns",
5909    },
5910    {
5911      name: "-webkit-filter",
5912      alias_for: "filter",
5913    },
5914    {
5915      name: "-webkit-flex",
5916      alias_for: "flex",
5917    },
5918    {
5919      name: "-webkit-flex-basis",
5920      alias_for: "flex-basis",
5921    },
5922    {
5923      name: "-webkit-flex-direction",
5924      alias_for: "flex-direction",
5925    },
5926    {
5927      name: "-webkit-flex-flow",
5928      alias_for: "flex-flow",
5929    },
5930    {
5931      name: "-webkit-flex-grow",
5932      alias_for: "flex-grow",
5933    },
5934    {
5935      name: "-webkit-flex-shrink",
5936      alias_for: "flex-shrink",
5937    },
5938    {
5939      name: "-webkit-flex-wrap",
5940      alias_for: "flex-wrap",
5941    },
5942    {
5943      name: "-webkit-font-feature-settings",
5944      alias_for: "font-feature-settings",
5945    },
5946    {
5947      name: "-webkit-justify-content",
5948      alias_for: "justify-content",
5949    },
5950    {
5951      name: "-webkit-opacity",
5952      alias_for: "opacity",
5953    },
5954    {
5955      name: "-webkit-order",
5956      alias_for: "order",
5957    },
5958    {
5959      name: "-webkit-perspective",
5960      alias_for: "perspective",
5961    },
5962    {
5963      name: "-webkit-perspective-origin",
5964      alias_for: "perspective-origin",
5965    },
5966    {
5967      name: "-webkit-shape-image-threshold",
5968      alias_for: "shape-image-threshold",
5969    },
5970    {
5971      name: "-webkit-shape-margin",
5972      alias_for: "shape-margin",
5973    },
5974    {
5975      name: "-webkit-shape-outside",
5976      alias_for: "shape-outside",
5977    },
5978    {
5979      name: "-webkit-text-size-adjust",
5980      alias_for: "text-size-adjust",
5981    },
5982    {
5983      name: "-webkit-transform",
5984      alias_for: "transform",
5985    },
5986    {
5987      name: "-webkit-transform-origin",
5988      alias_for: "transform-origin",
5989    },
5990    {
5991      name: "-webkit-transform-style",
5992      alias_for: "transform-style",
5993    },
5994    {
5995      name: "-webkit-transition",
5996      alias_for: "transition",
5997    },
5998    {
5999      name: "-webkit-transition-delay",
6000      alias_for: "transition-delay",
6001    },
6002    {
6003      name: "-webkit-transition-duration",
6004      alias_for: "transition-duration",
6005    },
6006    {
6007      name: "-webkit-transition-property",
6008      alias_for: "transition-property",
6009    },
6010    {
6011      name: "-webkit-transition-timing-function",
6012      alias_for: "transition-timing-function",
6013    },
6014    {
6015      name: "-webkit-user-select",
6016      alias_for: "user-select",
6017    },
6018    {
6019      name: "word-wrap",
6020      alias_for: "overflow-wrap",
6021    },
6022  ],
6023}
6024