Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(41)

Unified Diff: third_party/WebKit/Source/build/scripts/make_computed_style_base.py

Issue 2312823002: Added support for isInherited flags to ComputedStyleBase (Closed)
Patch Set: Rebase and a bit more cleanup work... Maybe needs a rethink Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | third_party/WebKit/Source/build/scripts/templates/ComputedStyleBase.cpp.tmpl » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/build/scripts/make_computed_style_base.py
diff --git a/third_party/WebKit/Source/build/scripts/make_computed_style_base.py b/third_party/WebKit/Source/build/scripts/make_computed_style_base.py
index 06db1ccf8955b601cf9bc14ab90506d0584a2b95..c103cd9202edf0d00e5de3b2617a29c0294bdd71 100755
--- a/third_party/WebKit/Source/build/scripts/make_computed_style_base.py
+++ b/third_party/WebKit/Source/build/scripts/make_computed_style_base.py
@@ -30,10 +30,13 @@ class ComputedStyleBaseWriter(make_style_builder.StyleBuilderWriter):
enum_values = [k.title() for k in property['keywords']]
self._computed_enums[enum_name] = enum_values
- # A list of fields
+ # A list of fields.
Field = namedtuple('Field', [
# Name of field member variable
'name',
+ # Name of field in method names
+ 'upper_camel_name',
+ 'lower_camel_name',
# Property field is for
'property',
# Field storage type
@@ -42,9 +45,23 @@ class ComputedStyleBaseWriter(make_style_builder.StyleBuilderWriter):
'size',
# Default value for field
'default_value',
+ # Which comparison functions to include this field in.
+ 'comparison_function_independent_inherited',
+ 'comparison_function_non_independent_inherited',
+ 'comparison_function_non_inherited',
+ # Which copy functions to include this field in.
+ 'copy_function_inherit',
+ 'copy_function_non_inherited_cache',
+ # If this field is independent, this is the field that stores the bit
+ # for whether this field was inherited or not.
+ 'inherited_flag_field',
])
self._fields = []
+ # Property name -> [fields for this property].
+ self._fields_per_property = {}
for property in self._properties.values():
+ fields_for_property = []
+ # Only generate keyword-only properties for now.
if property['keyword_only']:
# From the Blink style guide: Other data members should be prefixed by "m_". [names-data-members]
field_name = 'm_' + property['lower_camel_name']
@@ -52,13 +69,43 @@ class ComputedStyleBaseWriter(make_style_builder.StyleBuilderWriter):
type_name = property['type_name']
# For now, assume the default value is the first enum value.
default_value = type_name + '::' + self._computed_enums[type_name][0]
- self._fields.append(Field(
+
+ inherited_flag_field = None
+ if property['independent']:
+ inherited_flag_field = Field(
+ name=field_name + 'IsInherited',
+ upper_camel_name=property['upper_camel_name'] + 'IsInherited',
+ lower_camel_name=property['lower_camel_name'] + 'IsInherited',
+ property=property,
+ type='bool',
+ size=1,
+ default_value='true',
+ comparison_function_independent_inherited=False,
+ comparison_function_non_independent_inherited=False,
+ comparison_function_non_inherited=False,
+ copy_function_inherit=False,
+ copy_function_non_inherited_cache=True,
+ inherited_flag_field=None,
+ )
+ fields_for_property.append(inherited_flag_field)
+
+ fields_for_property.append(Field(
name=field_name,
+ upper_camel_name=property['upper_camel_name'],
+ lower_camel_name=property['lower_camel_name'],
property=property,
type=type_name,
size=int(math.ceil(bits_needed)),
default_value=default_value,
+ comparison_function_independent_inherited=property['inherited'] and property['independent'],
+ comparison_function_non_independent_inherited=property['inherited'] and not property['independent'],
+ comparison_function_non_inherited=not property['inherited'],
+ copy_function_inherit=property['inherited'],
+ copy_function_non_inherited_cache=not property['inherited'],
+ inherited_flag_field=inherited_flag_field
))
+ self._fields += fields_for_property
+ self._fields_per_property[property['name']] = fields_for_property
@template_expander.use_jinja('ComputedStyleBase.h.tmpl')
def generate_base_computed_style_h(self):
@@ -66,6 +113,7 @@ class ComputedStyleBaseWriter(make_style_builder.StyleBuilderWriter):
'properties': self._properties,
'enums': self._computed_enums,
'fields': self._fields,
+ 'fields_per_property': self._fields_per_property,
}
@template_expander.use_jinja('ComputedStyleBase.cpp.tmpl')
« no previous file with comments | « no previous file | third_party/WebKit/Source/build/scripts/templates/ComputedStyleBase.cpp.tmpl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698