1{
2// This file specifies fields in ComputedStyle that we would like to
3// generate, but are not CSS properties.
4
5  parameters: {
6    // If true, we do not include this field in ComputedStyleBase::InheritFrom
7    // and ComputedStyleBase::CopyNonInheritedFromCached.
8    custom_copy: {
9      default: false,
10    },
11
12    // If true, we do not include this field in ComputedStyleBase::InheritedEqual
13    // and ComputedStyleBase::NonInheritedEqual.
14    custom_compare: {
15      default: false,
16    },
17
18    // Controls whether the field has the "mutable" C++ keyword.
19    mutable: {
20      default: false,
21    },
22
23    // The rest is the same as css_properties.json5, but the only relevant ones in
24    // this file are:
25    // name, field_template, include_paths, default_value, type_name, keyword,
26    // inherited
27  },
28
29  data: [
30    {
31      name: "IsLink",
32      field_template: "monotonic_flag",
33      default_value: "false",
34      custom_copy: true,
35      custom_compare: true,
36    },
37    {
38      name: "Display",
39      field_template: "keyword",
40      type_name: "EDisplay",
41      keywords: [
42        "inline", "block", "list-item", "inline-block", "table", "inline-table",
43        "table-row-group", "table-header-group", "table-footer-group",
44        "table-row", "table-column-group", "table-column", "table-cell",
45        "table-caption", "-webkit-box", "-webkit-inline-box", "flex",
46        "inline-flex", "grid", "inline-grid", "contents", "flow-root", "none",
47        "layout-custom", "inline-layout-custom", "math", "block math"
48      ],
49      default_value: "inline",
50    },
51    {
52      name: "DisplayLayoutCustomName",
53      field_template: "external",
54      field_group: "*",
55      type_name: "AtomicString",
56      include_paths: ["third_party/blink/renderer/platform/wtf/text/atomic_string.h"],
57      default_value: "g_null_atom",
58    },
59    {
60      name: "DisplayLayoutCustomParentName",
61      field_template: "external",
62      field_group: "*",
63      type_name: "AtomicString",
64      include_paths: ["third_party/blink/renderer/platform/wtf/text/atomic_string.h"],
65      default_value: "g_null_atom",
66    },
67    {
68      name: "OriginalDisplay",
69      field_template: "keyword",
70      type_name: "EDisplay",
71      keywords: [
72        "inline", "block", "list-item", "inline-block", "table", "inline-table",
73        "table-row-group", "table-header-group", "table-footer-group",
74        "table-row", "table-column-group", "table-column", "table-cell",
75        "table-caption", "-webkit-box", "-webkit-inline-box", "flex",
76        "inline-flex", "grid", "inline-grid", "contents", "flow-root", "none",
77        "layout-custom", "inline-layout-custom", "math", "block math"
78      ],
79      default_value: "inline",
80    },
81    {
82      name: "InsideLink",
83      field_template: "keyword",
84      default_value: "not-inside-link",
85      keywords: ["not-inside-link", "inside-unvisited-link", "inside-visited-link"],
86      inherited: true,
87    },
88    // Whether we're inside an NG block fragmentation context.
89    {
90      name: "InsideNGFragmentationContext",
91      field_template: "primitive",
92      default_value: "false",
93      type_name: "bool",
94      inherited: true,
95    },
96    // Style has content property with attr() values.
97    {
98      name: "HasAttrContent",
99      field_template: "monotonic_flag",
100      default_value: "false",
101      custom_copy: true,
102      custom_compare: true,
103    },
104    // Style has applied a non-inherited -internal-light-dark() value from a UA
105    // stylesheet. Since such values have a dependency on the used color-scheme,
106    // we cannot use the MatchedPropertyCache when this flag is set.
107    {
108      name: "HasNonInheritedLightDarkValue",
109      field_template: "monotonic_flag",
110      default_value: "false",
111      custom_copy: true,
112      custom_compare: true,
113    },
114    // Whether this style is affected by these pseudo-classes.
115    {
116      name: "AffectedByFocusWithin",
117      field_template: "monotonic_flag",
118      default_value: "false",
119      custom_copy: true,
120      custom_compare: true,
121    },
122    {
123      name: "AffectedByHover",
124      field_template: "monotonic_flag",
125      default_value: "false",
126      custom_copy: true,
127      custom_compare: true,
128    },
129    {
130      name: "AffectedByActive",
131      field_template: "monotonic_flag",
132      default_value: "false",
133      custom_copy: true,
134      custom_compare: true,
135    },
136    {
137      name: "AffectedByDrag",
138      field_template: "monotonic_flag",
139      default_value: "false",
140      custom_copy: true,
141      custom_compare: true,
142    },
143    // A non-inherited property references a variable or @apply is used
144    {
145      name: "HasVariableReferenceFromNonInheritedProperty",
146      field_template: "monotonic_flag",
147      default_value: "false",
148      custom_copy: true,
149      custom_compare: true,
150    },
151    // A property references a variable that needs to be resolved
152    {
153      name: "HasVariableReference",
154      field_template: "monotonic_flag",
155      default_value: "false",
156      custom_compare: true,
157    },
158    // A property which value consists of a custom property declaration.
159    {
160      name: "HasVariableDeclaration",
161      field_template: "monotonic_flag",
162      default_value: "false",
163      custom_compare: true,
164    },
165    // Set on parent style when a child explicitly inherits a
166    // non-inherited property
167    {
168      name: "ChildHasExplicitInheritance",
169      field_template: "monotonic_flag",
170      default_value: "false",
171      custom_copy: true,
172      custom_compare: true,
173      mutable: true,
174    },
175    // Explicitly inherits a non-inherited property
176    {
177      name: "HasExplicitInheritance",
178      field_template: "monotonic_flag",
179      default_value: "false",
180    },
181    // These are set if we used viewport or rem units when resolving a length.
182    // FIXME: HasViewportUnits should be a monotonic_flag.
183    {
184      name: "HasViewportUnits",
185      field_template: "primitive",
186      default_value: "false",
187      type_name: "bool",
188      custom_compare: true,
189    },
190    {
191      name: "HasRemUnits",
192      field_template: "monotonic_flag",
193      default_value: "false",
194      custom_compare: true,
195    },
196    {
197      name: "HasEmUnits",
198      field_template: "monotonic_flag",
199      default_value: "false",
200      custom_compare: true,
201    },
202    // Whether we used a length unit that must be resolved against the measure
203    // of a certain glyph in some font.
204    {
205      name: "HasGlyphRelativeUnits",
206      field_template: "monotonic_flag",
207      default_value: "false",
208      custom_compare: true,
209    },
210    // These properties only have generated storage, and their methods are handwritten in ComputedStyle.
211    {
212      name: "StyleType",
213      field_template: "primitive",
214      field_size: 6,
215      default_value: "PseudoId::kPseudoIdNone",
216      type_name: "unsigned",
217      custom_copy: true,
218      custom_compare: true,
219      computed_style_custom_functions: ["getter", "setter"],
220    },
221    {
222      name: "PseudoBits",
223      field_template: "primitive",
224      field_size: 9,
225      default_value: "kPseudoIdNone",
226      type_name: "unsigned",
227      custom_copy: true,
228      custom_compare: true,
229      computed_style_custom_functions: ["getter", "setter"],
230    },
231    // True if 'underline solid' is the only text decoration on this element.
232    {
233      name: "HasSimpleUnderline",
234      field_template: "primitive",
235      default_value: "false",
236      type_name: "bool",
237      inherited: true,
238      computed_style_custom_functions: ["getter", "setter"],
239    },
240    // FIXME: vertical align is actually a CSS property, but since we don't support union fields
241    // which can be either a keyword or Length, this is specified in this file for now. Remove this
242    // once we can support union fields.
243    {
244      name: "VerticalAlign",
245      field_template: "primitive",
246      field_size: 4,
247      type_name: "unsigned",
248      default_value: "static_cast<unsigned>(EVerticalAlign::kBaseline)",
249      computed_style_custom_functions: ["initial", "getter", "setter"],
250    },
251    {
252      name: "VerticalAlignLength",
253      field_template: "external",
254      default_value: "Length()",
255      include_paths: ["third_party/blink/renderer/platform/geometry/length.h"],
256      type_name: "Length",
257      field_group: "box",
258      getter: "GetVerticalAlignLength",
259      computed_style_custom_functions: ["setter"],
260    },
261    {
262      name: "border-image",
263      field_template: "external",
264      include_paths: ["third_party/blink/renderer/core/style/nine_piece_image.h"],
265      type_name: "NinePieceImage",
266      field_group: "surround",
267      default_value: "NinePieceImage()",
268    },
269    {
270      name: "Background",
271      field_template: "external",
272      include_paths: ["third_party/blink/renderer/core/style/fill_layer.h"],
273      type_name: "FillLayer",
274      default_value: "FillLayer(EFillLayerType::kBackground, true)",
275      field_group: "background",
276      computed_style_custom_functions: ["getter", "setter"],
277    },
278    {
279      name: "HasAutoClip",
280      field_template: "primitive",
281      type_name: "bool",
282      default_value: "true",
283      field_group: "visual",
284      computed_style_custom_functions: ["setter"],
285    },
286    {
287      name: "HasAutoZIndex",
288      field_template: "primitive",
289      type_name: "bool",
290      field_group: "box",
291      default_value: "true",
292      computed_style_custom_functions: ["setter"],
293    },
294    {
295      name: "font",
296      field_template: "external",
297      include_paths: ["third_party/blink/renderer/platform/fonts/font.h"],
298      type_name: "Font",
299      field_group: "inherited->font",
300      inherited: true,
301      default_value: "Font()",
302      computed_style_custom_functions: ["getter", "setter"],
303    },
304    {
305      name: "TextAutosizingMultiplier",
306      inherited: true,
307      field_template: "primitive",
308      type_name: "float",
309      field_group: "inherited",
310      default_value: "1.0",
311      computed_style_custom_functions: ["setter"],
312    },
313    {
314      name: "CursorData",
315      inherited: true,
316      field_template: "external",
317      type_name: "CursorList",
318      include_paths: ["third_party/blink/renderer/core/style/cursor_list.h"],
319      default_value: "nullptr",
320      wrapper_pointer_name: "Persistent",
321      field_group: "*",
322      computed_style_custom_functions: ["getter", "setter"],
323    },
324    {
325      name: "EffectiveZoom",
326      inherited: true,
327      field_template: "primitive",
328      type_name: "float",
329      default_value: "1.0f",
330      field_group: "*",
331      computed_style_custom_functions: ["setter"],
332    },
333    {
334      name: "TextEmphasisFill",
335      inherited: true,
336      field_template: "keyword",
337      type_name: "TextEmphasisFill",
338      default_value: "filled",
339      keywords: ["filled", "open"],
340      field_group: "*",
341    },
342    {
343      name: "TextEmphasisMark",
344      inherited: true,
345      field_template: "keyword",
346      type_name: "TextEmphasisMark",
347      default_value: "none",
348      keywords: ["none", "auto", "dot", "circle", "double-circle", "triangle", "sesame", "custom"],
349      field_group: "*",
350      computed_style_custom_functions: ["getter", "setter"],
351    },
352    {
353      name: "TextIndentLine",
354      inherited: true,
355      field_template: "keyword",
356      type_name: "TextIndentLine",
357      keywords: ["first-line", "each-line"],
358      default_value: "first-line",
359      field_group: "*",
360    },
361    {
362      name: "TextIndentType",
363      inherited: true,
364      field_template: "keyword",
365      type_name: "TextIndentType",
366      keywords: ["normal", "hanging"],
367      default_value: "normal",
368      field_group: "*",
369    },
370    // Though will-change is not itself an inherited property, the intent
371    // expressed by 'will-change: contents' includes descendants.
372    {
373      name: "SubtreeWillChangeContents",
374      inherited: true,
375      field_template: "primitive",
376      type_name: "bool",
377      default_value: "false",
378      field_group: "*",
379    },
380    {
381      name: "SelfOrAncestorHasDirAutoAttribute",
382      inherited: true,
383      field_template: "primitive",
384      type_name: "bool",
385      default_value: "false",
386      field_group: "*",
387    },
388    // Though position: sticky is not itself an inherited property, being a
389    // descendent of a sticky element changes some document lifecycle logic.
390    {
391      name: "SubtreeIsSticky",
392      inherited: true,
393      field_template: "primitive",
394      type_name: "bool",
395      default_value: "false",
396      field_group: "*",
397    },
398    {
399      name: "HyphenationLimitBefore",
400      inherited: true,
401      field_template: "primitive",
402      type_name: "short",
403      default_value: "-1",
404      field_group: "*",
405      computed_style_custom_functions: ["getter", "setter"],
406    },
407    {
408      name: "HyphenationLimitAfter",
409      inherited: true,
410      field_template: "primitive",
411      type_name: "short",
412      default_value: "-1",
413      field_group: "*",
414      computed_style_custom_functions: ["getter", "setter"],
415    },
416    {
417      name: "HyphenationLimitLines",
418      inherited: true,
419      field_template: "primitive",
420      type_name: "short",
421      default_value: "-1",
422      field_group: "*",
423      computed_style_custom_functions: ["getter", "setter"],
424    },
425    {
426      name: "EffectiveTouchAction",
427      inherited: true,
428      field_template: "primitive",
429      include_paths: ["third_party/blink/renderer/platform/graphics/touch_action.h"],
430      type_name: "TouchAction",
431      field_size: 7,
432      default_value: "TouchAction::kAuto",
433      field_group: "*",
434      computed_style_custom_functions: ["getter", "setter"],
435    },
436    {
437      name: "EffectiveAppearance",
438      field_group: "*",
439      field_size: 5,
440      field_template: "primitive",
441      default_value: "kNoControlPart",
442      type_name: "ControlPart",
443    },
444    {
445      name: "TextEmphasisCustomMark",
446      inherited: true,
447      field_template: "external",
448      type_name: "AtomicString",
449      include_paths: ["third_party/blink/renderer/platform/wtf/text/atomic_string.h"],
450      default_value: "AtomicString()",
451      field_group: "*",
452    },
453    {
454      name: "AppliedTextDecorations",
455      inherited: true,
456      field_template: "external",
457      type_name: "AppliedTextDecorationList",
458      include_paths: ["third_party/blink/renderer/core/style/applied_text_decoration_list.h"],
459      default_value: "nullptr",
460      wrapper_pointer_name: "scoped_refptr",
461      field_group: "*",
462      computed_style_custom_functions: ["getter", "setter"],
463    },
464    {
465      name: "InheritedVariables",
466      inherited: true,
467      semi_independent_variable: true,
468      field_template: "external",
469      type_name: "StyleInheritedVariables",
470      include_paths: ["third_party/blink/renderer/core/style/style_inherited_variables.h"],
471      default_value: "nullptr",
472      wrapper_pointer_name: "scoped_refptr",
473      field_group: "InheritedVariables",
474      computed_style_custom_functions: ["getter", "setter"],
475    },
476    {
477      name: "InitialData",
478      inherited: true,
479      field_template: "external",
480      type_name: "StyleInitialData",
481      include_paths: ["third_party/blink/renderer/core/style/style_initial_data.h"],
482      default_value: "nullptr",
483      wrapper_pointer_name: "scoped_refptr",
484      field_group: "*",
485      computed_style_custom_functions: ["getter", "setter"],
486    },
487    {
488      name: "Mask",
489      field_template: "external",
490      type_name: "FillLayer",
491      field_group: "*",
492      default_value: "FillLayer(EFillLayerType::kMask, true)",
493      computed_style_custom_functions: ["getter", "setter"],
494    },
495    {
496      name: "CounterDirectives",
497      field_template: "external",
498      type_name: "CounterDirectiveMap",
499      field_group: "*",
500      default_value: "nullptr",
501      wrapper_pointer_name: "std::unique_ptr",
502      include_paths: ["third_party/blink/renderer/core/style/counter_directives.h"],
503      computed_style_custom_functions: ["getter", "setter"],
504    },
505    {
506      name: "Animations",
507      field_template: "external",
508      type_name: "CSSAnimationData",
509      field_group: "*",
510      default_value: "nullptr",
511      wrapper_pointer_name: "std::unique_ptr",
512      include_paths: ["third_party/blink/renderer/core/animation/css/css_animation_data.h"],
513      computed_style_custom_functions: ["getter", "setter"],
514    },
515    {
516      name: "Transitions",
517      field_template: "external",
518      type_name: "CSSTransitionData",
519      field_group: "*",
520      default_value: "nullptr",
521      wrapper_pointer_name: "std::unique_ptr",
522      include_paths: ["third_party/blink/renderer/core/animation/css/css_transition_data.h"],
523      computed_style_custom_functions: ["getter", "setter"],
524    },
525    {
526      name: "MaskBoxImage",
527      field_template: "external",
528      type_name: "NinePieceImage",
529      field_group: "*",
530      default_value: "NinePieceImage::MaskDefaults()",
531      include_paths: ["third_party/blink/renderer/core/style/nine_piece_image.h"],
532      computed_style_custom_functions: ["getter", "setter"],
533    },
534    {
535      name: "PageSize",
536      field_template: "external",
537      type_name: "FloatSize",
538      field_group: "*",
539      default_value: "FloatSize()",
540      include_paths: ["third_party/blink/renderer/platform/geometry/float_size.h"],
541    },
542    {
543      name: "OutlineStyleIsAuto",
544      field_template: "primitive",
545      type_name: "bool",
546      default_value: "false",
547      field_group: "*",
548    },
549    {
550      name: "CallbackSelectors",
551      field_template: "external",
552      type_name: "Vector<String>",
553      field_group: "*",
554      default_value: "Vector<String>()",
555      include_paths: ["third_party/blink/renderer/platform/wtf/vector.h",
556                      "third_party/blink/renderer/platform/wtf/text/wtf_string.h"],
557      computed_style_custom_functions: ["setter"],
558    },
559    {
560      name: "PaintImages",
561      field_template: "external",
562      type_name: "PaintImages",
563      field_group: "*",
564      default_value: "nullptr",
565      wrapper_pointer_name: "std::unique_ptr",
566      custom_compare: true,
567      include_paths: ["third_party/blink/renderer/core/style/paint_images.h"],
568      computed_style_custom_functions: ["getter", "setter"],
569    },
570    {
571      name: "NonInheritedVariables",
572      field_template: "external",
573      type_name: "StyleNonInheritedVariables",
574      field_group: "*",
575      default_value: "nullptr",
576      wrapper_pointer_name: "std::unique_ptr",
577      include_paths: ["third_party/blink/renderer/core/style/style_non_inherited_variables.h"],
578      computed_style_custom_functions: ["getter", "setter"],
579    },
580    {
581      name: "PageSizeType",
582      field_template: "primitive",
583      field_group: "*",
584      type_name: "PageSizeType",
585      field_size: 2,
586      default_value: "PageSizeType::kAuto",
587      include_paths: ["third_party/blink/public/common/css/page_size_type.h"],
588    },
589    {
590      name: "HasCurrentOpacityAnimation",
591      field_template: "primitive",
592      type_name: "bool",
593      field_group: "*",
594      default_value: "false",
595    },
596    {
597      name: "HasCurrentTransformAnimation",
598      field_template: "primitive",
599      type_name: "bool",
600      field_group: "*",
601      default_value: "false",
602    },
603    {
604      name: "HasCurrentFilterAnimation",
605      field_template: "primitive",
606      type_name: "bool",
607      field_group: "*",
608      default_value: "false",
609    },
610    {
611      name: "HasCurrentBackdropFilterAnimation",
612      field_template: "primitive",
613      type_name: "bool",
614      field_group: "*",
615      default_value: "false",
616    },
617    {
618      name: "IsRunningOpacityAnimationOnCompositor",
619      field_template: "primitive",
620      type_name: "bool",
621      field_group: "*",
622      // This field just affects how changes of animatable values are handled,
623      // so it doesn't contribute to style differences.
624      custom_compare: true,
625      default_value: "false",
626    },
627    {
628      name: "IsRunningTransformAnimationOnCompositor",
629      field_template: "primitive",
630      type_name: "bool",
631      field_group: "*",
632      // This field just affects how changes of animatable values are handled,
633      // so it doesn't contribute to style differences.
634      custom_compare: true,
635      default_value: "false",
636    },
637    {
638      name: "IsRunningFilterAnimationOnCompositor",
639      field_template: "primitive",
640      type_name: "bool",
641      field_group: "*",
642      // This field just affects how changes of animatable values are handled,
643      // so it doesn't contribute to style differences.
644      custom_compare: true,
645      default_value: "false",
646    },
647    {
648      name: "IsRunningBackdropFilterAnimationOnCompositor",
649      field_template: "primitive",
650      type_name: "bool",
651      field_group: "*",
652      // This field just affects how changes of animatable values are handled,
653      // so it doesn't contribute to style differences.
654      custom_compare: true,
655      default_value: "false",
656    },
657    // A stacking context is painted atomically and defines a stacking order,
658    // whereas a containing stacking context defines in which order the stacking
659    // contexts below are painted.
660    // See CSS 2.1, Appendix E (https://www.w3.org/TR/CSS21/zindex.html) for more
661    // details. Note that this field does _not_ consider paint or layout
662    // containment, since it depends on the type of layout object created.
663    {
664      name: "IsStackingContextWithoutContainment",
665      field_template: "primitive",
666      type_name: "bool",
667      field_group: "*",
668      default_value: "false",
669    },
670    // Plugins require accelerated compositing for reasons external to blink.
671    // In which case, we need to update the ComputedStyle on the
672    // LayoutEmbeddedObject, so store this bit so that the style actually changes
673    // when the plugin becomes composited.
674    {
675      name: "RequiresAcceleratedCompositingForExternalReasons",
676      field_template: "primitive",
677      type_name: "bool",
678      field_group: "*",
679      default_value: "false",
680    },
681    // Style adjustment for appearance is disabled when certain properties are set.
682    {
683      name: "HasAuthorBackground",
684      field_template: "monotonic_flag",
685      default_value: "false",
686    },
687    {
688      name: "HasAuthorBorder",
689      field_template: "monotonic_flag",
690      default_value: "false",
691    },
692    {
693      name: "WillChangeProperties",
694      field_template: "external",
695      type_name: "Vector<CSSPropertyID>",
696      field_group: "*->will-change",
697      default_value: "Vector<CSSPropertyID>()",
698      include_paths: ["third_party/blink/renderer/platform/wtf/vector.h",
699                      "third_party/blink/renderer/core/css/css_property_names.h"],
700    },
701    {
702      name: "WillChangeContents",
703      field_template: "primitive",
704      type_name: "bool",
705      field_group: "*->will-change",
706      default_value: "false",
707    },
708    {
709      name: "WillChangeScrollPosition",
710      field_template: "primitive",
711      type_name: "bool",
712      field_group: "*->will-change",
713      default_value: "false",
714    },
715    {
716      name: "HasAutoColumnWidth",
717      field_template: "primitive",
718      type_name: "bool",
719      field_group: "*->multi-col",
720      default_value: "true",
721      computed_style_custom_functions: ["setter"],
722    },
723    {
724      name: "HasAutoColumnCount",
725      field_template: "primitive",
726      type_name: "bool",
727      field_group: "*->multi-col",
728      default_value: "true",
729      computed_style_custom_functions: ["setter"],
730    },
731    {
732      name: "NamedGridColumnLines",
733      field_template: "external",
734      type_name: "NamedGridLinesMap",
735      field_group: "*->grid",
736      default_value: "NamedGridLinesMap()",
737      include_paths: ["third_party/blink/renderer/core/style/named_grid_lines_map.h"],
738    },
739    {
740      name: "NamedGridRowLines",
741      field_template: "external",
742      type_name: "NamedGridLinesMap",
743      field_group: "*->grid",
744      default_value: "NamedGridLinesMap()",
745      include_paths: ["third_party/blink/renderer/core/style/named_grid_lines_map.h"],
746    },
747    {
748      name: "OrderedNamedGridColumnLines",
749      field_template: "external",
750      type_name: "OrderedNamedGridLines",
751      field_group: "*->grid",
752      default_value: "OrderedNamedGridLines()",
753      include_paths: ["third_party/blink/renderer/core/style/ordered_named_grid_lines.h"],
754    },
755    {
756      name: "OrderedNamedGridRowLines",
757      field_template: "external",
758      type_name: "OrderedNamedGridLines",
759      field_group: "*->grid",
760      default_value: "OrderedNamedGridLines()",
761      include_paths: ["third_party/blink/renderer/core/style/ordered_named_grid_lines.h"],
762    },
763    {
764      name: "AutoRepeatNamedGridColumnLines",
765      field_template: "external",
766      type_name: "NamedGridLinesMap",
767      field_group: "*->grid",
768      default_value: "NamedGridLinesMap()",
769      include_paths: ["third_party/blink/renderer/core/style/named_grid_lines_map.h"],
770    },
771    {
772      name: "AutoRepeatNamedGridRowLines",
773      field_template: "external",
774      type_name: "NamedGridLinesMap",
775      field_group: "*->grid",
776      default_value: "NamedGridLinesMap()",
777      include_paths: ["third_party/blink/renderer/core/style/named_grid_lines_map.h"],
778    },
779    {
780      name: "AutoRepeatOrderedNamedGridColumnLines",
781      field_template: "external",
782      type_name: "OrderedNamedGridLines",
783      field_group: "*->grid",
784      default_value: "OrderedNamedGridLines()",
785      include_paths: ["third_party/blink/renderer/core/style/ordered_named_grid_lines.h"],
786    },
787    {
788      name: "AutoRepeatOrderedNamedGridRowLines",
789      field_template: "external",
790      type_name: "OrderedNamedGridLines",
791      field_group: "*->grid",
792      default_value: "OrderedNamedGridLines()",
793      include_paths: ["third_party/blink/renderer/core/style/ordered_named_grid_lines.h"],
794    },
795    {
796      name: "ImplicitNamedGridColumnLines",
797      field_template: "external",
798      type_name: "NamedGridLinesMap",
799      field_group: "*->grid",
800      default_value: "NamedGridLinesMap()",
801      include_paths: ["third_party/blink/renderer/core/style/named_grid_lines_map.h"],
802    },
803    {
804      name: "ImplicitNamedGridRowLines",
805      field_template: "external",
806      type_name: "NamedGridLinesMap",
807      field_group: "*->grid",
808      default_value: "NamedGridLinesMap()",
809      include_paths: ["third_party/blink/renderer/core/style/named_grid_lines_map.h"],
810    },
811    {
812      name: "NamedGridArea",
813      field_template: "external",
814      type_name: "NamedGridAreaMap",
815      field_group: "*->grid",
816      default_value: "NamedGridAreaMap()",
817      include_paths: ["third_party/blink/renderer/core/style/grid_area.h"]
818    },
819    {
820      name: "NamedGridAreaRowCount",
821      field_template: "primitive",
822      type_name: "size_t",
823      field_group: "*->grid",
824      default_value: "0",
825    },
826    {
827      name: "NamedGridAreaColumnCount",
828      field_template: "primitive",
829      type_name: "size_t",
830      field_group: "*->grid",
831      default_value: "0",
832    },
833    {
834      name: "GridAutoRepeatColumns",
835      field_template: "external",
836      type_name: "Vector<GridTrackSize>",
837      field_group: "*->grid",
838      default_value: "Vector<GridTrackSize>()",
839      include_paths: ["third_party/blink/renderer/platform/wtf/vector.h",
840                      "third_party/blink/renderer/core/style/grid_track_size.h"],
841    },
842    {
843      name: "GridAutoRepeatRows",
844      field_template: "external",
845      type_name: "Vector<GridTrackSize>",
846      field_group: "*->grid",
847      default_value: "Vector<GridTrackSize>()",
848      include_paths: ["third_party/blink/renderer/platform/wtf/vector.h",
849                      "third_party/blink/renderer/core/style/grid_track_size.h"],
850    },
851    {
852      name: "GridAutoRepeatColumnsInsertionPoint",
853      field_template: "primitive",
854      type_name: "size_t",
855      field_group: "*->grid",
856      default_value: "0",
857    },
858    {
859      name: "GridAutoRepeatRowsInsertionPoint",
860      field_template: "primitive",
861      type_name: "size_t",
862      field_group: "*->grid",
863      default_value: "0",
864    },
865    {
866      name: "GridAutoRepeatColumnsType",
867      field_template: "keyword",
868      type_name: "AutoRepeatType",
869      field_group: "*->grid",
870      keywords: ["no-auto-repeat", "auto-fill", "auto-fit"],
871      default_value: "no-auto-repeat",
872    },
873    {
874      name: "GridAutoRepeatRowsType",
875      field_template: "keyword",
876      type_name: "AutoRepeatType",
877      field_group: "*->grid",
878      keywords: ["no-auto-repeat", "auto-fill", "auto-fit"],
879      default_value: "no-auto-repeat",
880    },
881    // We only create and store ComputedStyle objects for elements in
882    // display:none subtrees if we need it for e.g. getComputedStyle. This flag
883    // is true for such ComputedStyle objects.
884    {
885      name: "IsEnsuredInDisplayNone",
886      field_template: "monotonic_flag",
887      default_value: "false",
888      custom_compare: true,
889    },
890    {
891      name: "MayHaveMargin",
892      field_template: "monotonic_flag",
893      default_value: "false",
894      custom_compare: true,
895    },
896    {
897      name: "MayHavePadding",
898      field_template: "monotonic_flag",
899      default_value: "false",
900      custom_compare: true,
901    },
902    {
903      name: "DarkColorScheme",
904      field_template: "primitive",
905      type_name: "bool",
906      default_value: "false",
907      custom_compare: true,
908      inherited: true,
909    },
910    {
911      name: "IsInBlockifyingDisplay",
912      field_template: "monotonic_flag",
913      default_value: "false",
914      custom_compare: true,
915    },
916    {
917      name: "IsFlexOrGridOrCustomItem",
918      field_template: "monotonic_flag",
919      default_value: "false",
920      custom_compare: true,
921    },
922    {
923      name: "IsFlexOrGridItem",
924      field_template: "monotonic_flag",
925      default_value: "false",
926      custom_compare: true,
927    },
928    {
929      name: "ListStyleType",
930      inherited: true,
931      field_template: "keyword",
932      type_name: "EListStyleType",
933      keywords: [
934        "disc", "circle", "square", "decimal", "decimal-leading-zero",
935        "arabic-indic", "bengali", "cambodian", "khmer", "devanagari",
936        "gujarati", "gurmukhi", "kannada", "lao", "malayalam", "mongolian",
937        "myanmar", "oriya", "persian", "urdu", "telugu", "tibetan", "thai",
938        "lower-roman", "upper-roman", "lower-greek", "lower-alpha",
939        "lower-latin", "upper-alpha", "upper-latin", "cjk-earthly-branch",
940        "cjk-heavenly-stem", "ethiopic-halehame", "ethiopic-halehame-am",
941        "ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et", "hangul",
942        "hangul-consonant", "korean-hangul-formal", "korean-hanja-formal",
943        "korean-hanja-informal", "hebrew", "armenian", "lower-armenian",
944        "upper-armenian", "georgian", "cjk-ideographic", "simp-chinese-formal",
945        "simp-chinese-informal", "trad-chinese-formal", "trad-chinese-informal",
946        "hiragana", "katakana", "hiragana-iroha", "katakana-iroha", "none",
947        "string",
948      ],
949      default_value: "disc",
950    },
951    {
952      name: "ListStyleStringValue",
953      inherited: true,
954      field_template: "external",
955      field_group: "*",
956      type_name: "AtomicString",
957      include_paths: ["third_party/blink/renderer/platform/wtf/text/atomic_string.h"],
958      default_value: "g_null_atom",
959    },
960    {
961      name: "IsEnsuredOutsideFlatTree",
962      field_template: "monotonic_flag",
963      default_value: "false",
964      custom_compare: true,
965      inherited: true,
966    },
967    {
968      name: "IsInsideListElement",
969      field_template: "monotonic_flag",
970      default_value: "false",
971      custom_compare: true,
972      inherited: true,
973    },
974
975    // This field disables the 'overflow' check in |LayoutBlock::
976    // InlineBlockBaseline()|. For 'inline-block', CSS says that the baseline
977    // is the bottom margin edge if 'overflow' is not visible. But some
978    // elements want to ignore this condition.
979    {
980      name: "ShouldIgnoreOverflowPropertyForInlineBlockBaseline",
981      field_template: "monotonic_flag",
982      default_value: "false",
983      inherited: false,
984    },
985    {
986      name: "MathBaseline",
987      field_template: "external",
988      default_value: "Length()",
989      include_paths: ["third_party/blink/renderer/platform/geometry/length.h"],
990      type_name: "Length",
991      field_group: "*",
992      getter: "GetMathBaseline",
993    },
994    {
995      name: "MathFractionBarThickness",
996      field_template: "external",
997      default_value: "Length()",
998      include_paths: ["third_party/blink/renderer/platform/geometry/length.h"],
999      type_name: "Length",
1000      field_group: "*",
1001      getter: "GetMathFractionBarThickness",
1002    },
1003    {
1004      name: "MathLSpace",
1005      field_template: "external",
1006      default_value: "Length()",
1007      include_paths: ["third_party/blink/renderer/platform/geometry/length.h"],
1008      type_name: "Length",
1009      field_group: "*",
1010      getter: "GetMathLSpace",
1011    },
1012    {
1013      name: "MathRSpace",
1014      field_template: "external",
1015      default_value: "Length()",
1016      include_paths: ["third_party/blink/renderer/platform/geometry/length.h"],
1017      type_name: "Length",
1018      field_group: "*",
1019      getter: "GetMathRSpace",
1020    },
1021    {
1022      name: "MathPaddedVOffset",
1023      field_template: "external",
1024      default_value: "Length()",
1025      include_paths: ["third_party/blink/renderer/platform/geometry/length.h"],
1026      type_name: "Length",
1027      field_group: "*",
1028      getter: "GetMathPaddedVOffset",
1029    },
1030    {
1031      name: "MathPaddedDepth",
1032      field_template: "external",
1033      default_value: "Length()",
1034      include_paths: ["third_party/blink/renderer/platform/geometry/length.h"],
1035      type_name: "Length",
1036      field_group: "*",
1037      getter: "GetMathPaddedDepth",
1038    },
1039
1040    {
1041      name: "MathMinSize",
1042      field_template: "external",
1043      default_value: "Length()",
1044      include_paths: ["third_party/blink/renderer/platform/geometry/length.h"],
1045      type_name: "Length",
1046      field_group: "*",
1047      getter: "GetMathMinSize",
1048    },
1049    {
1050      name: "MathMaxSize",
1051      field_template: "external",
1052      default_value: "Length()",
1053      include_paths: ["third_party/blink/renderer/platform/geometry/length.h"],
1054      type_name: "Length",
1055      field_group: "*",
1056      getter: "GetMathMaxSize",
1057    },
1058    {
1059      name: "EffectiveZIndexZero",
1060      field_template: "primitive",
1061      type_name: "bool",
1062      field_group: "*",
1063      default_value: "false",
1064    },
1065  ],
1066}
1067