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

Unified Diff: third_party/WebKit/Source/build/scripts/make_computed_style_base.py

Issue 2887333003: Generate StyleRareInheritedData in ComputedStyleBase. (Closed)
Patch Set: Rebase 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 side-by-side diff with in-line comments
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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 2a31be9f71f4b30287bb6dcc42cc3a8e0ce3ddff..37f22b97c1fac1c98cc36e0ac696a2bf10e825f1 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
@@ -25,11 +25,11 @@ from itertools import chain
# TODO(shend): Put alignment sizes into code form, rather than linking to a CL which may disappear.
ALIGNMENT_ORDER = [
'double',
- 'Font', 'FillLayer', 'NinePieceImage', # Aligns like a void * (can be 32 or 64 bits)
- 'LengthBox', 'LengthSize', 'Length', 'float',
+ 'AtomicString', 'RefPtr', 'Persistent', 'Font', 'FillLayer', 'NinePieceImage', # Aligns like a pointer (can be 32 or 64 bits)
+ 'LengthBox', 'LengthSize', 'Length', 'TextSizeAdjust', 'TabSize', 'float',
'StyleColor', 'Color', 'LayoutUnit', 'unsigned', 'int',
'short',
- 'char',
+ 'uint8_t', 'char',
'bool'
]
@@ -110,6 +110,7 @@ class Field(object):
Should be in upper camel case.
property_name: Name of the property that the field is part of.
type_name: Name of the C++ type exposed by the generated interface (e.g. EClear, int).
+ wrapper_pointer_name: Name of the pointer type that wraps this field (e.g. RefPtr).
field_template: Determines the interface generated for the field. Can be one of:
keyword, flag, or monotonic_flag.
field_group: The name of the group that this field is inside.
@@ -117,13 +118,15 @@ class Field(object):
default_value: Default value for this field when it is first initialized.
"""
- def __init__(self, field_role, name_for_methods, property_name, type_name,
+ def __init__(self, field_role, name_for_methods, property_name, type_name, wrapper_pointer_name,
field_template, field_group, size, default_value, has_custom_compare_and_copy,
getter_method_name, setter_method_name, initial_method_name, **kwargs):
"""Creates a new field."""
self.name = class_member_name(name_for_methods)
self.property_name = property_name
self.type_name = type_name
+ self.wrapper_pointer_name = wrapper_pointer_name
+ self.alignment_type = self.wrapper_pointer_name or self.type_name
self.field_template = field_template
self.group_name = field_group
self.group_member_name = class_member_name(join_name(field_group, 'data')) if field_group else None
@@ -273,6 +276,10 @@ def _create_property_field(property_):
default_value = 'false'
size = 1
+ if property_['wrapper_pointer_name']:
+ assert property_['field_template'] == 'storage_only'
+ type_name = '{}<{}>'.format(property_['wrapper_pointer_name'], type_name)
+
return Field(
'property',
name_for_methods,
@@ -280,6 +287,7 @@ def _create_property_field(property_):
inherited=property_['inherited'],
independent=property_['independent'],
type_name=type_name,
+ wrapper_pointer_name=property_['wrapper_pointer_name'],
field_template=property_['field_template'],
field_group=property_['field_group'],
size=size,
@@ -302,6 +310,7 @@ def _create_inherited_flag_field(property_):
name_for_methods,
property_name=property_['name'],
type_name='bool',
+ wrapper_pointer_name=None,
field_template='primitive',
field_group=property_['field_group'],
size=1,
@@ -364,9 +373,9 @@ def _reorder_non_bit_fields(non_bit_fields):
# A general rule of thumb is to sort members by their alignment requirement
# (from biggest aligned to smallest).
for field in non_bit_fields:
- assert field.type_name in ALIGNMENT_ORDER, \
- "Type {} has unknown alignment. Please update ALIGNMENT_ORDER to include it.".format(field.type_name)
- return list(sorted(non_bit_fields, key=lambda f: ALIGNMENT_ORDER.index(f.type_name)))
+ assert field.alignment_type in ALIGNMENT_ORDER, \
+ "Type {} has unknown alignment. Please update ALIGNMENT_ORDER to include it.".format(field.alignment_type)
+ return list(sorted(non_bit_fields, key=lambda f: ALIGNMENT_ORDER.index(f.alignment_type)))
def _reorder_fields(fields):
« 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