| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright 2016 The Chromium Authors. All rights reserved. | 2 # Copyright 2016 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 import math | 6 import math |
| 7 import sys | 7 import sys |
| 8 | 8 |
| 9 import json5_generator | 9 import json5_generator |
| 10 import template_expander | 10 import template_expander |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 115 if property_['field_storage_type']: | 115 if property_['field_storage_type']: |
| 116 type_path = property_['field_storage_type'] | 116 type_path = property_['field_storage_type'] |
| 117 type_name = type_path.split('/')[-1] | 117 type_name = type_path.split('/')[-1] |
| 118 else: | 118 else: |
| 119 type_name = property_['type_name'] | 119 type_name = property_['type_name'] |
| 120 type_path = None | 120 type_path = None |
| 121 | 121 |
| 122 # For now, the getter name should match the field name. Later, getter names | 122 # For now, the getter name should match the field name. Later, getter names |
| 123 # will start with an uppercase letter, so if they conflict with the type nam
e, | 123 # will start with an uppercase letter, so if they conflict with the type nam
e, |
| 124 # add 'get' to the front. | 124 # add 'get' to the front. |
| 125 getter_method_name = property_name_lower | 125 getter_method_name = property_['getter'] |
| 126 if type_name == property_name: | 126 if type_name == property_name: |
| 127 getter_method_name = 'get' + property_name | 127 getter_method_name = 'Get' + property_name |
| 128 | 128 |
| 129 assert property_['initial_keyword'] is not None, \ | 129 assert property_['initial_keyword'] is not None, \ |
| 130 ('MakeComputedStyleBase requires an initial keyword for keyword_only val
ues, none specified ' | 130 ('MakeComputedStyleBase requires an initial keyword for keyword_only val
ues, none specified ' |
| 131 'for property ' + property_['name']) | 131 'for property ' + property_['name']) |
| 132 default_value = type_name + '::k' + camel_case(property_['initial_keyword']) | 132 default_value = type_name + '::k' + camel_case(property_['initial_keyword']) |
| 133 | 133 |
| 134 # Add the property itself as a member variable. | 134 # Add the property itself as a member variable. |
| 135 return Field( | 135 return Field( |
| 136 'property', | 136 'property', |
| 137 name=field_name, | 137 name=field_name, |
| 138 property_name=property_['name'], | 138 property_name=property_['name'], |
| 139 inherited=property_['inherited'], | 139 inherited=property_['inherited'], |
| 140 independent=property_['independent'], | 140 independent=property_['independent'], |
| 141 storage_type=type_name, | 141 storage_type=type_name, |
| 142 storage_type_path=type_path, | 142 storage_type_path=type_path, |
| 143 size=int(math.ceil(bits_needed)), | 143 size=int(math.ceil(bits_needed)), |
| 144 default_value=default_value, | 144 default_value=default_value, |
| 145 getter_method_name=getter_method_name, | 145 getter_method_name=getter_method_name, |
| 146 setter_method_name='set' + property_name, | 146 setter_method_name='Set' + property_name, |
| 147 initial_method_name='initial' + property_name, | 147 initial_method_name='Initial' + property_name, |
| 148 resetter_method_name='reset' + property_name, | 148 resetter_method_name='Reset' + property_name, |
| 149 is_inherited_method_name=property_name_lower + 'IsInherited', | 149 is_inherited_method_name=property_name + 'IsInherited', |
| 150 ) | 150 ) |
| 151 | 151 |
| 152 | 152 |
| 153 def _create_inherited_flag_field(property_): | 153 def _create_inherited_flag_field(property_): |
| 154 """ | 154 """ |
| 155 Create the field used for an inheritance fast path from an independent CSS p
roperty, | 155 Create the field used for an inheritance fast path from an independent CSS p
roperty, |
| 156 and return the Field object. | 156 and return the Field object. |
| 157 """ | 157 """ |
| 158 property_name = property_['name_for_methods'] | 158 property_name = property_['name_for_methods'] |
| 159 property_name_lower = lower_first(property_name) | 159 property_name_lower = lower_first(property_name) |
| 160 | 160 |
| 161 field_name_suffix_upper = property_name + 'IsInherited' | 161 field_name_suffix_upper = property_name + 'IsInherited' |
| 162 field_name_suffix_lower = property_name_lower + 'IsInherited' | 162 field_name_suffix_lower = property_name_lower + 'IsInherited' |
| 163 | 163 |
| 164 return Field( | 164 return Field( |
| 165 'inherited_flag', | 165 'inherited_flag', |
| 166 name='m_' + field_name_suffix_lower, | 166 name='m_' + field_name_suffix_lower, |
| 167 property_name=property_['name'], | 167 property_name=property_['name'], |
| 168 storage_type='bool', | 168 storage_type='bool', |
| 169 storage_type_path=None, | 169 storage_type_path=None, |
| 170 size=1, | 170 size=1, |
| 171 default_value='true', | 171 default_value='true', |
| 172 getter_method_name=field_name_suffix_lower, | 172 getter_method_name=field_name_suffix_upper, |
| 173 setter_method_name='set' + field_name_suffix_upper, | 173 setter_method_name='Set' + field_name_suffix_upper, |
| 174 initial_method_name='initial' + field_name_suffix_upper, | 174 initial_method_name='Initial' + field_name_suffix_upper, |
| 175 resetter_method_name='reset' + field_name_suffix_upper, | 175 resetter_method_name='Reset' + field_name_suffix_upper, |
| 176 ) | 176 ) |
| 177 | 177 |
| 178 | 178 |
| 179 def _create_fields(properties): | 179 def _create_fields(properties): |
| 180 """ | 180 """ |
| 181 Create ComputedStyle fields from CSS properties and return a list of Field o
bjects. | 181 Create ComputedStyle fields from CSS properties and return a list of Field o
bjects. |
| 182 """ | 182 """ |
| 183 fields = [] | 183 fields = [] |
| 184 for property_ in properties: | 184 for property_ in properties: |
| 185 # Keywords only means we generate an enum field. | 185 # Keywords only means we generate an enum field. |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 294 def generate_base_computed_style_constants(self): | 294 def generate_base_computed_style_constants(self): |
| 295 return { | 295 return { |
| 296 'properties': self._properties, | 296 'properties': self._properties, |
| 297 'enums': self._generated_enums, | 297 'enums': self._generated_enums, |
| 298 'fields': self._fields, | 298 'fields': self._fields, |
| 299 'expected_total_field_bytes': self._expected_total_field_bytes, | 299 'expected_total_field_bytes': self._expected_total_field_bytes, |
| 300 } | 300 } |
| 301 | 301 |
| 302 if __name__ == '__main__': | 302 if __name__ == '__main__': |
| 303 json5_generator.Maker(ComputedStyleBaseWriter).main() | 303 json5_generator.Maker(ComputedStyleBaseWriter).main() |
| OLD | NEW |