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

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

Issue 2876803003: Generate diffs for fields in ComputedStyle that use their public getters (Closed)
Patch Set: alancutter@'s suggestions Created 3 years, 7 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
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 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 groups[field.group_name].append(field) 182 groups[field.group_name].append(field)
183 183
184 no_group = groups.pop(None) 184 no_group = groups.pop(None)
185 subgroups = [Group(group_name, [], _reorder_fields(fields)) for group_name, fields in groups.items()] 185 subgroups = [Group(group_name, [], _reorder_fields(fields)) for group_name, fields in groups.items()]
186 return Group('', subgroups=subgroups, fields=_reorder_fields(no_group)) 186 return Group('', subgroups=subgroups, fields=_reorder_fields(no_group))
187 187
188 188
189 def _create_diff_groups_map(diff_function_inputs, root_group): 189 def _create_diff_groups_map(diff_function_inputs, root_group):
190 diff_functions_map = {} 190 diff_functions_map = {}
191 for entry in diff_function_inputs: 191 for entry in diff_function_inputs:
192 diff_functions_map[entry['name']] = _create_diff_groups(entry['fields'], root_group) 192 diff_functions_map[entry['name']] = _create_diff_groups(entry['fields_to _diff'], entry['methods_to_diff'], root_group)
193 return diff_functions_map 193 return diff_functions_map
194 194
195 195
196 def _create_diff_groups(fields_to_diff, root_group): 196 def _list_field_dependencies(methods_to_diff):
197 field_dependencies = []
198 for entry in methods_to_diff:
199 field_dependencies.append(entry['field_dependencies'])
200 return field_dependencies
alancutter (OOO until 2018) 2017/05/16 03:28:38 This looks like it's creating a list of lists.
nainar 2017/05/16 03:46:13 Fixed.
201
202
203 def _create_diff_groups(fields_to_diff, methods_to_diff, root_group):
197 diff_group = DiffGroup(root_group.member_name) 204 diff_group = DiffGroup(root_group.member_name)
205 field_dependencies = _list_field_dependencies(methods_to_diff)
198 for subgroup in root_group.subgroups: 206 for subgroup in root_group.subgroups:
199 if any(field.property_name in fields_to_diff for field in subgroup.all_f ields): 207 if any(field.property_name in (fields_to_diff + field_dependencies) for field in subgroup.all_fields):
200 diff_group.subgroups.append(_create_diff_groups(fields_to_diff, subg roup)) 208 diff_group.subgroups.append(_create_diff_groups(fields_to_diff, meth ods_to_diff, subgroup))
201 for field in root_group.fields: 209 for field in root_group.fields:
202 if field.property_name in fields_to_diff: 210 if field.property_name in fields_to_diff:
203 diff_group.expressions.append(field.getter_expression) 211 diff_group.expressions.append(field.getter_expression)
212 for entry in methods_to_diff:
213 if field.property_name in entry['field_dependencies']:
214 diff_group.expressions.append(entry['method'])
204 return diff_group 215 return diff_group
205 216
206 217
207 def _create_enums(properties): 218 def _create_enums(properties):
208 """ 219 """
209 Returns an OrderedDict of enums to be generated, enum name -> [list of enum values] 220 Returns an OrderedDict of enums to be generated, enum name -> [list of enum values]
210 """ 221 """
211 enums = {} 222 enums = {}
212 for property_ in properties: 223 for property_ in properties:
213 # Only generate enums for keyword properties that use the default field_ type_path. 224 # Only generate enums for keyword properties that use the default field_ type_path.
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
431 442
432 @template_expander.use_jinja('ComputedStyleBaseConstants.h.tmpl') 443 @template_expander.use_jinja('ComputedStyleBaseConstants.h.tmpl')
433 def generate_base_computed_style_constants(self): 444 def generate_base_computed_style_constants(self):
434 return { 445 return {
435 'properties': self._properties, 446 'properties': self._properties,
436 'enums': self._generated_enums, 447 'enums': self._generated_enums,
437 } 448 }
438 449
439 if __name__ == '__main__': 450 if __name__ == '__main__':
440 json5_generator.Maker(ComputedStyleBaseWriter).main() 451 json5_generator.Maker(ComputedStyleBaseWriter).main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698