| 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 1367b7f18538ba98157805dc5d6def55b0fc608e..b86dd26ff1b37465366b2d5fefbac463569ad2b8 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
|
| @@ -10,7 +10,7 @@ import json5_generator
|
| import template_expander
|
| import make_style_builder
|
|
|
| -from name_utilities import camel_case, lower_first, upper_first_letter
|
| +from name_utilities import camel_case, lower_first, upper_first_letter, enum_for_css_keyword
|
|
|
|
|
| # Temporary hard-coded list of fields that are not CSS properties.
|
| @@ -133,12 +133,7 @@ def _create_property_field(property_):
|
| # From the Blink style guide: Other data members should be prefixed by "m_". [names-data-members]
|
| field_name = 'm_' + property_name_lower
|
| bits_needed = math.log(len(property_['keywords']), 2) # TODO: implement for non-enums
|
| -
|
| - # Separate the type path from the type name, if specified.
|
| - if property_['field_type_path']:
|
| - type_name = property_['field_type_path'].split('/')[-1]
|
| - else:
|
| - type_name = property_['type_name']
|
| + type_name = property_['type_name']
|
|
|
| # For now, the getter name should match the field name. Later, getter names
|
| # will start with an uppercase letter, so if they conflict with the type name,
|
| @@ -279,8 +274,16 @@ class ComputedStyleBaseWriter(make_style_builder.StyleBuilderWriter):
|
| 'ComputedStyleBase.h': self.generate_base_computed_style_h,
|
| 'ComputedStyleBase.cpp': self.generate_base_computed_style_cpp,
|
| 'ComputedStyleBaseConstants.h': self.generate_base_computed_style_constants,
|
| + 'CSSValueIDMappingsGenerated.h': self.generate_css_value_mappings,
|
| }
|
|
|
| + property_values = self._properties.values()
|
| +
|
| + # Override the type name when field_type_path is specified
|
| + for property_ in property_values:
|
| + if property_['field_type_path']:
|
| + property_['type_name'] = property_['field_type_path'].split('/')[-1]
|
| +
|
| # Create all the enums used by properties
|
| self._generated_enums = _create_enums(self._properties.values())
|
|
|
| @@ -316,13 +319,15 @@ class ComputedStyleBaseWriter(make_style_builder.StyleBuilderWriter):
|
| for field in bucket:
|
| self._fields.append(field)
|
|
|
| + self._include_paths = _get_include_paths(self._properties.values())
|
| +
|
|
|
| @template_expander.use_jinja('ComputedStyleBase.h.tmpl')
|
| def generate_base_computed_style_h(self):
|
| return {
|
| 'properties': self._properties,
|
| 'enums': self._generated_enums,
|
| - 'include_paths': _get_include_paths(self._properties.values()),
|
| + 'include_paths': self._include_paths,
|
| 'fields': self._fields,
|
| 'expected_total_field_bytes': self._expected_total_field_bytes,
|
| }
|
| @@ -345,5 +350,21 @@ class ComputedStyleBaseWriter(make_style_builder.StyleBuilderWriter):
|
| 'expected_total_field_bytes': self._expected_total_field_bytes,
|
| }
|
|
|
| + @template_expander.use_jinja('CSSValueIDMappingsGenerated.h.tmpl')
|
| + def generate_css_value_mappings(self):
|
| + mappings = {}
|
| +
|
| + for property_ in self._properties.values():
|
| + if property_['field_template'] == 'keyword':
|
| + mappings[property_['type_name']] = {
|
| + 'default_value': 'k' + camel_case(property_['initial_keyword']),
|
| + 'mapping': [('k' + camel_case(k), enum_for_css_keyword(k)) for k in property_['keywords']],
|
| + }
|
| +
|
| + return {
|
| + 'include_paths': self._include_paths,
|
| + 'mappings': mappings,
|
| + }
|
| +
|
| if __name__ == '__main__':
|
| json5_generator.Maker(ComputedStyleBaseWriter).main()
|
|
|