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

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

Issue 2900253002: Split has_custom_compare_and_copy in ComputedStyleExtraFields.json5. (Closed)
Patch Set: Rebase Created 3 years, 6 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 | third_party/WebKit/Source/build/scripts/templates/ComputedStyleBase.h.tmpl » ('j') | 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 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 type_name: Name of the C++ type exposed by the generated interface (e.g. EClear, int). 113 type_name: Name of the C++ type exposed by the generated interface (e.g. EClear, int).
114 wrapper_pointer_name: Name of the pointer type that wraps this field (e. g. RefPtr). 114 wrapper_pointer_name: Name of the pointer type that wraps this field (e. g. RefPtr).
115 field_template: Determines the interface generated for the field. Can be one of: 115 field_template: Determines the interface generated for the field. Can be one of:
116 keyword, flag, or monotonic_flag. 116 keyword, flag, or monotonic_flag.
117 field_group: The name of the group that this field is inside. 117 field_group: The name of the group that this field is inside.
118 size: Number of bits needed for storage. 118 size: Number of bits needed for storage.
119 default_value: Default value for this field when it is first initialized . 119 default_value: Default value for this field when it is first initialized .
120 """ 120 """
121 121
122 def __init__(self, field_role, name_for_methods, property_name, type_name, w rapper_pointer_name, 122 def __init__(self, field_role, name_for_methods, property_name, type_name, w rapper_pointer_name,
123 field_template, field_group, size, default_value, has_custom_co mpare_and_copy, 123 field_template, field_group, size, default_value, custom_copy, custom_compare,
124 getter_method_name, setter_method_name, initial_method_name, ** kwargs): 124 getter_method_name, setter_method_name, initial_method_name, ** kwargs):
125 """Creates a new field.""" 125 """Creates a new field."""
126 self.name = class_member_name(name_for_methods) 126 self.name = class_member_name(name_for_methods)
127 self.property_name = property_name 127 self.property_name = property_name
128 self.type_name = type_name 128 self.type_name = type_name
129 self.wrapper_pointer_name = wrapper_pointer_name 129 self.wrapper_pointer_name = wrapper_pointer_name
130 self.alignment_type = self.wrapper_pointer_name or self.type_name 130 self.alignment_type = self.wrapper_pointer_name or self.type_name
131 self.field_template = field_template 131 self.field_template = field_template
132 self.group_name = field_group 132 self.group_name = field_group
133 self.group_member_name = class_member_name(join_name(field_group, 'data' )) if field_group else None 133 self.group_member_name = class_member_name(join_name(field_group, 'data' )) if field_group else None
134 self.size = size 134 self.size = size
135 self.default_value = default_value 135 self.default_value = default_value
136 self.has_custom_compare_and_copy = has_custom_compare_and_copy 136 self.custom_copy = custom_copy
137 self.custom_compare = custom_compare
137 138
138 # Field role: one of these must be true 139 # Field role: one of these must be true
139 self.is_property = field_role == 'property' 140 self.is_property = field_role == 'property'
140 self.is_inherited_flag = field_role == 'inherited_flag' 141 self.is_inherited_flag = field_role == 'inherited_flag'
141 assert (self.is_property, self.is_inherited_flag).count(True) == 1, \ 142 assert (self.is_property, self.is_inherited_flag).count(True) == 1, \
142 'Field role has to be exactly one of: property, inherited_flag' 143 'Field role has to be exactly one of: property, inherited_flag'
143 144
144 if not self.is_inherited_flag: 145 if not self.is_inherited_flag:
145 self.is_inherited = kwargs.pop('inherited') 146 self.is_inherited = kwargs.pop('inherited')
146 self.is_independent = kwargs.pop('independent') 147 self.is_independent = kwargs.pop('independent')
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 name_for_methods, 292 name_for_methods,
292 property_name=property_['name'], 293 property_name=property_['name'],
293 inherited=property_['inherited'], 294 inherited=property_['inherited'],
294 independent=property_['independent'], 295 independent=property_['independent'],
295 type_name=type_name, 296 type_name=type_name,
296 wrapper_pointer_name=property_['wrapper_pointer_name'], 297 wrapper_pointer_name=property_['wrapper_pointer_name'],
297 field_template=property_['field_template'], 298 field_template=property_['field_template'],
298 field_group=property_['field_group'], 299 field_group=property_['field_group'],
299 size=size, 300 size=size,
300 default_value=default_value, 301 default_value=default_value,
301 has_custom_compare_and_copy=property_['has_custom_compare_and_copy'], 302 custom_copy=property_['custom_copy'],
303 custom_compare=property_['custom_compare'],
302 getter_method_name=property_['getter'], 304 getter_method_name=property_['getter'],
303 setter_method_name=property_['setter'], 305 setter_method_name=property_['setter'],
304 initial_method_name=property_['initial'], 306 initial_method_name=property_['initial'],
305 ) 307 )
306 308
307 309
308 def _create_inherited_flag_field(property_): 310 def _create_inherited_flag_field(property_):
309 """ 311 """
310 Create the field used for an inheritance fast path from an independent CSS p roperty, 312 Create the field used for an inheritance fast path from an independent CSS p roperty,
311 and return the Field object. 313 and return the Field object.
312 """ 314 """
313 name_for_methods = join_name(property_['name_for_methods'], 'is inherited') 315 name_for_methods = join_name(property_['name_for_methods'], 'is inherited')
314 return Field( 316 return Field(
315 'inherited_flag', 317 'inherited_flag',
316 name_for_methods, 318 name_for_methods,
317 property_name=property_['name'], 319 property_name=property_['name'],
318 type_name='bool', 320 type_name='bool',
319 wrapper_pointer_name=None, 321 wrapper_pointer_name=None,
320 field_template='primitive', 322 field_template='primitive',
321 field_group=property_['field_group'], 323 field_group=property_['field_group'],
322 size=1, 324 size=1,
323 default_value='true', 325 default_value='true',
324 has_custom_compare_and_copy=False, 326 custom_copy=False,
327 custom_compare=False,
325 getter_method_name=method_name(name_for_methods), 328 getter_method_name=method_name(name_for_methods),
326 setter_method_name=method_name(join_name('set', name_for_methods)), 329 setter_method_name=method_name(join_name('set', name_for_methods)),
327 initial_method_name=method_name(join_name('initial', name_for_methods)), 330 initial_method_name=method_name(join_name('initial', name_for_methods)),
328 ) 331 )
329 332
330 333
331 def _create_fields(properties): 334 def _create_fields(properties):
332 """ 335 """
333 Create ComputedStyle fields from properties and return a list of Field objec ts. 336 Create ComputedStyle fields from properties and return a list of Field objec ts.
334 """ 337 """
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 406
404 # Ignore shorthand properties 407 # Ignore shorthand properties
405 for property_ in self._properties.values(): 408 for property_ in self._properties.values():
406 if property_['field_template'] is not None: 409 if property_['field_template'] is not None:
407 assert not property_['longhands'], \ 410 assert not property_['longhands'], \
408 "Shorthand '{}' cannot have a field_template.".format(proper ty_['name']) 411 "Shorthand '{}' cannot have a field_template.".format(proper ty_['name'])
409 412
410 css_properties = [value for value in self._properties.values() if not va lue['longhands']] 413 css_properties = [value for value in self._properties.values() if not va lue['longhands']]
411 414
412 for property_ in css_properties: 415 for property_ in css_properties:
413 # All CSS properties that are generated do not have custom compariso n and copy logic. 416 # All CSS properties from CSSProperties.json5 do not have custom com parison and copy logic.
414 property_['has_custom_compare_and_copy'] = False 417 property_['custom_copy'] = False
418 property_['custom_compare'] = False
415 419
416 # Read extra fields using the parameter specification from the CSS prope rties file. 420 # Read extra fields using the parameter specification from the CSS prope rties file.
417 extra_fields = json5_generator.Json5File.load_from_files( 421 extra_fields = json5_generator.Json5File.load_from_files(
418 [json5_file_paths[1]], 422 [json5_file_paths[1]],
419 default_parameters=self.json5_file.parameters 423 default_parameters=self.json5_file.parameters
420 ).name_dictionaries 424 ).name_dictionaries
421 425
422 for property_ in extra_fields: 426 for property_ in extra_fields:
423 make_style_builder.apply_property_naming_defaults(property_) 427 make_style_builder.apply_property_naming_defaults(property_)
424 428
(...skipping 28 matching lines...) Expand all
453 457
454 @template_expander.use_jinja('ComputedStyleBaseConstants.h.tmpl') 458 @template_expander.use_jinja('ComputedStyleBaseConstants.h.tmpl')
455 def generate_base_computed_style_constants(self): 459 def generate_base_computed_style_constants(self):
456 return { 460 return {
457 'properties': self._properties, 461 'properties': self._properties,
458 'enums': self._generated_enums, 462 'enums': self._generated_enums,
459 } 463 }
460 464
461 if __name__ == '__main__': 465 if __name__ == '__main__':
462 json5_generator.Maker(ComputedStyleBaseWriter).main() 466 json5_generator.Maker(ComputedStyleBaseWriter).main()
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Source/build/scripts/templates/ComputedStyleBase.h.tmpl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698