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

Unified Diff: third_party/WebKit/Source/build/scripts/templates/ComputedStyleBase.cpp.tmpl

Issue 2919343002: Remove template parameter on ComputedStyleBase. (Closed)
Patch Set: Address comments 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/build/scripts/templates/ComputedStyleBase.cpp.tmpl
diff --git a/third_party/WebKit/Source/build/scripts/templates/ComputedStyleBase.cpp.tmpl b/third_party/WebKit/Source/build/scripts/templates/ComputedStyleBase.cpp.tmpl
new file mode 100644
index 0000000000000000000000000000000000000000..5a95aaaccfc5fca6e1cff06a9c22ef764c83f3d0
--- /dev/null
+++ b/third_party/WebKit/Source/build/scripts/templates/ComputedStyleBase.cpp.tmpl
@@ -0,0 +1,78 @@
+{% from 'macros.tmpl' import license, print_if %}
+{% from 'fields/field.tmpl' import encode, getter_expression, setter_expression, fieldwise_copy, fieldwise_diff %}
+{% from 'fields/group.tmpl' import define_field_group_class %}
+{{license()}}
+
+#include "core/ComputedStyleBase.h"
+#include "core/style/ComputedStyle.h"
+#include "platform/wtf/SizeAssertions.h"
+
+namespace blink {
+
+struct SameSizeAsComputedStyleBase {
+ {% if computed_style.subgroups is defined %}
+ void* dataRefs[{{computed_style.subgroups|length}}];
+ {% endif %}
+ {% for field in computed_style.fields|rejectattr("is_bit_field") %}
+ {{field.type_name}} {{field.name}};
+ {% endfor %}
+ unsigned m_bit_fields[{{computed_style.num_32_bit_words_for_bit_fields}}];
+};
+
+// If this fails, the packing algorithm in make_computed_style_base.py has
+// failed to produce the optimal packed size. To fix, update the algorithm to
+// ensure that the buckets are placed so that each takes up at most 1 word.
+ASSERT_SIZE(ComputedStyleBase, SameSizeAsComputedStyleBase);
+
+// Constructor and destructor are protected so that only the parent class ComputedStyle
+// can instantiate this class.
+ComputedStyleBase::ComputedStyleBase() :
+{% for field in computed_style.fields %}
+ {{field.name}}({{encode(field, field.default_value)}}){{print_if(not loop.last, ',')}}
+{% endfor %}
+{
+ {% for subgroup in computed_style.subgroups %}
+ {{subgroup.member_name}}.Init();
+ {% endfor %}
+}
+
+void ComputedStyleBase::InheritFrom(const ComputedStyleBase& other,
+ IsAtShadowBoundary isAtShadowBoundary) {
+ {{fieldwise_copy(computed_style, computed_style.all_fields
+ |selectattr("is_property")
+ |selectattr("is_inherited")
+ |list
+ )|indent(2)}}
+}
+
+void ComputedStyleBase::CopyNonInheritedFromCached(
+ const ComputedStyleBase& other) {
+ {{fieldwise_copy(computed_style, computed_style.all_fields
+ |rejectattr("has_custom_compare_and_copy")
+ |rejectattr("is_inherited")
+ |list
+ )|indent(2)}}
+}
+
+void ComputedStyleBase::PropagateIndependentInheritedProperties(
+ const ComputedStyleBase& parentStyle) {
+ {% for field in computed_style.all_fields if field.is_property and field.is_independent %}
+ if ({{field.is_inherited_method_name}}())
+ {{setter_expression(field)}} = parentStyle.{{getter_expression(field)}};
+ {% endfor %}
+}
+
+{% for name, groups_to_diff in diff_functions_map.items() %}
+bool ComputedStyleBase::{{name}}(const ComputedStyle& a, const ComputedStyle& b) {
+ {{fieldwise_diff(groups_to_diff)|indent(4)}}
+ return false;
+}
+
+{% endfor %}
+
+{% for group in computed_style.subgroups %}
+{{define_field_group_class(group)}}
+
+{% endfor %}
+
+} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698