Index: third_party/WebKit/Source/core/css/ComputedStyleExtraFields.json5 |
diff --git a/third_party/WebKit/Source/core/css/ComputedStyleExtraFields.json5 b/third_party/WebKit/Source/core/css/ComputedStyleExtraFields.json5 |
new file mode 100644 |
index 0000000000000000000000000000000000000000..eccee69bca0292b766bea9821ef4f812c3204079 |
--- /dev/null |
+++ b/third_party/WebKit/Source/core/css/ComputedStyleExtraFields.json5 |
@@ -0,0 +1,168 @@ |
+{ |
+// This file specifies fields in ComputedStyle that we would like to |
+// generate, but are not CSS properties. |
+ |
+ parameters: { |
+ // - field_size |
+ // Number of bits needed to store this field. Only used for storage_only |
+ // fields. If specified, the field will be stored as bit field. Otherwise |
+ // it will be stored as a normal data member. |
+ field_size: { |
+ valid_type: "int", |
+ }, |
+ |
+ // If the field has_custom_compare_and_copy, then it does not appear in |
+ // ComputedStyle::operator== and ComputedStyle::CopyNonInheritedFromCached. |
+ has_custom_compare_and_copy: { |
+ default: false, |
+ }, |
+ |
+ // The rest is the same as CSSProperties.json5, but the only relevant ones in |
+ // this file are: |
+ // name, field_template, field_type_path, default_value, type_name, keyword, |
+ // inherited |
+ }, |
+ |
+ data: [ |
+ { |
+ name: "IsLink", |
+ field_template: "monotonic_flag", |
+ default_value: "false", |
+ has_custom_compare_and_copy: true, |
+ }, |
+ { |
+ name: "OriginalDisplay", |
+ field_template: "keyword", |
+ default_value: "inline", |
+ type_name: "EDisplay", |
+ keywords: [ |
+ "inline", "block", "list-item", "inline-block", "table", "inline-table", "table-row-group", "table-header-group", |
+ "table-footer-group", "table-row", "table-column-group", "table-column", "table-cell", "table-caption", "-webkit-box", |
+ "-webkit-inline-box", "flex", "inline-flex", "grid", "inline-grid", "contents", "flow-root", "none", |
+ ], |
+ has_custom_compare_and_copy: true, |
+ }, |
+ { |
+ name: "InsideLink", |
+ field_template: "keyword", |
+ default_value: "not-inside-link", |
+ keywords: ["not-inside-link", "inside-unvisited-link", "inside-visited-link"], |
+ inherited: true, |
+ has_custom_compare_and_copy: true, |
+ }, |
+ // Style can not be shared. |
+ { |
+ name: "Unique", |
+ field_template: "monotonic_flag", |
+ default_value: "false", |
+ has_custom_compare_and_copy: true, |
+ }, |
+ // Whether this style is affected by these pseudo-classes. |
+ { |
+ name: "AffectedByFocus", |
+ field_template: "monotonic_flag", |
+ default_value: "false", |
+ has_custom_compare_and_copy: true, |
+ }, |
+ { |
+ name: "AffectedByFocusWithin", |
+ field_template: "monotonic_flag", |
+ default_value: "false", |
+ has_custom_compare_and_copy: true, |
+ }, |
+ { |
+ name: "AffectedByHover", |
+ field_template: "monotonic_flag", |
+ default_value: "false", |
+ has_custom_compare_and_copy: true, |
+ }, |
+ { |
+ name: "AffectedByActive", |
+ field_template: "monotonic_flag", |
+ default_value: "false", |
+ has_custom_compare_and_copy: true, |
+ }, |
+ { |
+ name: "AffectedByDrag", |
+ field_template: "monotonic_flag", |
+ default_value: "false", |
+ has_custom_compare_and_copy: true, |
+ }, |
+ // A non-inherited property references a variable or @apply is used |
+ { |
+ name: "HasVariableReferenceFromNonInheritedProperty", |
+ field_template: "monotonic_flag", |
+ default_value: "false", |
+ has_custom_compare_and_copy: true, |
+ }, |
+ // Explicitly inherits a non-inherited property |
+ { |
+ name: "HasExplicitlyInheritedProperties", |
+ field_template: "monotonic_flag", |
+ default_value: "false", |
+ has_custom_compare_and_copy: true, |
+ }, |
+ // These are set if we used viewport or rem units when resolving a length. |
+ // TODO(shend): HasViewportUnits should be a monotonic_flag. |
+ { |
+ name: "HasViewportUnits", |
+ field_template: "primitive", |
+ default_value: "false", |
+ type_name: "bool", |
+ has_custom_compare_and_copy: true, |
+ }, |
+ { |
+ name: "HasRemUnits", |
+ field_template: "monotonic_flag", |
+ default_value: "false", |
+ has_custom_compare_and_copy: true, |
+ }, |
+ // These properties only have generated storage, and their methods are handwritten in ComputedStyle. |
+ // TODO(shend): Remove these fields and delete the 'storage_only' template. |
+ { |
+ name: "EmptyState", |
+ field_template: "storage_only", |
+ field_size: 1, |
+ default_value: "false", |
+ type_name: "bool", |
+ has_custom_compare_and_copy: true, |
+ }, |
+ { |
+ name: "StyleType", |
+ field_template: "storage_only", |
+ field_size: 6, |
+ default_value: "0", |
+ type_name: "PseudoId", |
+ has_custom_compare_and_copy: true, |
+ }, |
+ { |
+ name: "PseudoBits", |
+ field_template: "storage_only", |
+ field_size: 8, |
+ default_value: "kPseudoIdNone", |
+ type_name: "PseudoId", |
+ has_custom_compare_and_copy: true, |
+ }, |
+ // True if 'underline solid' is the only text decoration on this element. |
+ { |
+ name: "HasSimpleUnderline", |
+ field_template: "storage_only", |
+ field_size: 1, |
+ default_value: "false", |
+ type_name: "bool", |
+ inherited: true, |
+ has_custom_compare_and_copy: true, |
+ }, |
+ // TODO(shend): vertical align is actually a CSS property, but since we don't support union fields |
+ // which can be either a keyword or Length, this is generated as a nonproperty for now. Remove this |
+ // once we can support union fields and groups. |
+ { |
+ name: "VerticalAlign", |
+ field_template: "storage_only", |
+ field_size: 4, |
+ default_value: "EVerticalAlign::kBaseline", |
+ type_name: "EVerticalAlign", |
+ has_custom_compare_and_copy: true, |
+ }, |
+ ], |
+} |