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

Side by Side Diff: third_party/WebKit/Source/build/scripts/make_computed_style_base.py

Issue 2811183004: Respect method name overrides in make_computed_style_base.py. (Closed)
Patch Set: Created 3 years, 8 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 Should be in upper camel case. 98 Should be in upper camel case.
99 property_name: Name of the property that the field is part of. 99 property_name: Name of the property that the field is part of.
100 type_name: Name of the C++ type exposed by the generated interface (e.g. EClear, int). 100 type_name: Name of the C++ type exposed by the generated interface (e.g. EClear, int).
101 field_template: Determines the interface generated for the field. Can be one of: 101 field_template: Determines the interface generated for the field. Can be one of:
102 keyword, flag, or monotonic_flag. 102 keyword, flag, or monotonic_flag.
103 size: Number of bits needed for storage. 103 size: Number of bits needed for storage.
104 default_value: Default value for this field when it is first initialized . 104 default_value: Default value for this field when it is first initialized .
105 """ 105 """
106 106
107 def __init__(self, field_role, name_for_methods, property_name, type_name, 107 def __init__(self, field_role, name_for_methods, property_name, type_name,
108 field_template, size, default_value, properties, **kwargs): 108 field_template, size, default_value, getter_method_name, setter _method_name,
109 initial_method_name, **kwargs):
109 """Creates a new field.""" 110 """Creates a new field."""
110 self.name = class_member_name(name_for_methods) 111 self.name = class_member_name(name_for_methods)
111 self.property_name = property_name 112 self.property_name = property_name
112 self.type_name = type_name 113 self.type_name = type_name
113 self.field_template = field_template 114 self.field_template = field_template
114 self.size = size 115 self.size = size
115 self.default_value = default_value 116 self.default_value = default_value
116 117
117 # Field role: one of these must be true 118 # Field role: one of these must be true
118 self.is_property = field_role == 'property' 119 self.is_property = field_role == 'property'
119 self.is_inherited_flag = field_role == 'inherited_flag' 120 self.is_inherited_flag = field_role == 'inherited_flag'
120 self.is_nonproperty = field_role == 'nonproperty' 121 self.is_nonproperty = field_role == 'nonproperty'
121 assert (self.is_property, self.is_inherited_flag, self.is_nonproperty).c ount(True) == 1, \ 122 assert (self.is_property, self.is_inherited_flag, self.is_nonproperty).c ount(True) == 1, \
122 'Field role has to be exactly one of: property, inherited_flag, nonp roperty' 123 'Field role has to be exactly one of: property, inherited_flag, nonp roperty'
123 124
124 if not self.is_inherited_flag: 125 if not self.is_inherited_flag:
125 self.is_inherited = kwargs.pop('inherited') 126 self.is_inherited = kwargs.pop('inherited')
126 self.is_independent = kwargs.pop('independent') 127 self.is_independent = kwargs.pop('independent')
127 assert self.is_inherited or not self.is_independent, 'Only inherited fields can be independent' 128 assert self.is_inherited or not self.is_independent, 'Only inherited fields can be independent'
128 129
129 self.is_inherited_method_name = method_name(join_name(name_for_metho ds, 'is inherited')) 130 self.is_inherited_method_name = method_name(join_name(name_for_metho ds, 'is inherited'))
130 131
131 # Method names 132 # Method names
132 if 'getter' in properties and not self.is_inherited_flag: 133 self.getter_method_name = getter_method_name
133 self.getter_method_name = properties['getter'] 134 self.setter_method_name = setter_method_name
134 else: 135 self.initial_method_name = initial_method_name
135 getter_prefix = 'Get' if name_for_methods == self.type_name else ''
136 self.getter_method_name = method_name(join_name(getter_prefix, name_fo r_methods))
137 self.setter_method_name = method_name(join_name('Set', name_for_methods) )
138 self.initial_method_name = method_name(join_name('Initial', name_for_met hods))
139 self.resetter_method_name = method_name(join_name('Reset', name_for_meth ods)) 136 self.resetter_method_name = method_name(join_name('Reset', name_for_meth ods))
140 137
141 # If the size of the field is not None, it means it is a bit field 138 # If the size of the field is not None, it means it is a bit field
142 self.is_bit_field = self.size is not None 139 self.is_bit_field = self.size is not None
143 140
144 assert len(kwargs) == 0, 'Unexpected arguments provided to Field: ' + st r(kwargs) 141 assert len(kwargs) == 0, 'Unexpected arguments provided to Field: ' + st r(kwargs)
145 142
146 143
147 def _get_include_paths(properties): 144 def _get_include_paths(properties):
148 """ 145 """
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 return Field( 214 return Field(
218 field_role, 215 field_role,
219 name_for_methods, 216 name_for_methods,
220 property_name=property_['name'], 217 property_name=property_['name'],
221 inherited=property_['inherited'], 218 inherited=property_['inherited'],
222 independent=property_['independent'], 219 independent=property_['independent'],
223 type_name=type_name, 220 type_name=type_name,
224 field_template=property_['field_template'], 221 field_template=property_['field_template'],
225 size=size, 222 size=size,
226 default_value=default_value, 223 default_value=default_value,
227 properties=property_, 224 getter_method_name=property_['getter'],
225 setter_method_name=property_['setter'],
226 initial_method_name=property_['initial'],
228 ) 227 )
229 228
230 229
231 def _create_inherited_flag_field(property_): 230 def _create_inherited_flag_field(property_):
232 """ 231 """
233 Create the field used for an inheritance fast path from an independent CSS p roperty, 232 Create the field used for an inheritance fast path from an independent CSS p roperty,
234 and return the Field object. 233 and return the Field object.
235 """ 234 """
235 name_for_methods = join_name(property_['name_for_methods'], 'is inherited')
236 return Field( 236 return Field(
237 'inherited_flag', 237 'inherited_flag',
238 join_name(property_['name_for_methods'], 'is inherited'), 238 name_for_methods,
239 property_name=property_['name'], 239 property_name=property_['name'],
240 type_name='bool', 240 type_name='bool',
241 field_template='primitive', 241 field_template='primitive',
242 size=1, 242 size=1,
243 default_value='true', 243 default_value='true',
244 properties=property_, 244 getter_method_name=method_name(name_for_methods),
245 setter_method_name=method_name(join_name('set', name_for_methods)),
246 initial_method_name=method_name(join_name('initial', name_for_methods)),
245 ) 247 )
246 248
247 249
248 def _create_fields(field_role, properties): 250 def _create_fields(field_role, properties):
249 """ 251 """
250 Create ComputedStyle fields from properties or nonproperties and return a li st of Field objects. 252 Create ComputedStyle fields from properties or nonproperties and return a li st of Field objects.
251 """ 253 """
252 fields = [] 254 fields = []
253 for property_ in properties: 255 for property_ in properties:
254 # Only generate properties that have a field template 256 # Only generate properties that have a field template
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 } 309 }
308 310
309 # TODO(shend): Remove this once we move NONPROPERTIES to its own JSON fi le, 311 # TODO(shend): Remove this once we move NONPROPERTIES to its own JSON fi le,
310 # since the JSON5 reader will handle missing fields and defaults. 312 # since the JSON5 reader will handle missing fields and defaults.
311 for property_ in NONPROPERTIES: 313 for property_ in NONPROPERTIES:
312 property_['name_for_methods'] = property_['name'] 314 property_['name_for_methods'] = property_['name']
313 if 'field_type_path' not in property_: 315 if 'field_type_path' not in property_:
314 property_['field_type_path'] = None 316 property_['field_type_path'] = None
315 if 'type_name' not in property_: 317 if 'type_name' not in property_:
316 property_['type_name'] = 'E' + enum_type_name(property_['name_fo r_methods']) 318 property_['type_name'] = 'E' + enum_type_name(property_['name_fo r_methods'])
319 property_['getter'] = method_name(property_['name_for_methods'])
320 property_['setter'] = method_name(join_name('set', property_['name_f or_methods']))
321 property_['initial'] = method_name(join_name('initial', property_['n ame_for_methods']))
317 322
318 property_values = self._properties.values() 323 property_values = self._properties.values()
319 324
320 for property_ in property_values: 325 for property_ in property_values:
321 # Override the type name when field_type_path is specified 326 # Override the type name when field_type_path is specified
322 if property_['field_type_path']: 327 if property_['field_type_path']:
323 property_['type_name'] = property_['field_type_path'].split('/') [-1] 328 property_['type_name'] = property_['field_type_path'].split('/') [-1]
324 # CSS properties are not allowed to explicitly specify their field_s ize. 329 # CSS properties are not allowed to explicitly specify their field_s ize.
325 property_['field_size'] = None 330 property_['field_size'] = None
326 331
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 'mapping': [(enum_value_name(k), enum_for_css_keyword(k)) fo r k in property_['keywords']], 409 'mapping': [(enum_value_name(k), enum_for_css_keyword(k)) fo r k in property_['keywords']],
405 } 410 }
406 411
407 return { 412 return {
408 'include_paths': self._include_paths, 413 'include_paths': self._include_paths,
409 'mappings': mappings, 414 'mappings': mappings,
410 } 415 }
411 416
412 if __name__ == '__main__': 417 if __name__ == '__main__':
413 json5_generator.Maker(ComputedStyleBaseWriter).main() 418 json5_generator.Maker(ComputedStyleBaseWriter).main()
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698