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

Unified Diff: third_party/WebKit/Source/bindings/templates/attributes.cpp.tmpl

Issue 2758893002: Slim V8DOMConfiguration structs for attributes and accessors. (Closed)
Patch Set: Created 3 years, 9 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/bindings/templates/attributes.cpp.tmpl
diff --git a/third_party/WebKit/Source/bindings/templates/attributes.cpp.tmpl b/third_party/WebKit/Source/bindings/templates/attributes.cpp.tmpl
index 6d4c1676888a1a26d77e849af2e7a6df82d4be1a..d53e3c26bcce933235406fb15865f62d4bbd31e7 100644
--- a/third_party/WebKit/Source/bindings/templates/attributes.cpp.tmpl
+++ b/third_party/WebKit/Source/bindings/templates/attributes.cpp.tmpl
@@ -475,12 +475,6 @@ const v8::FunctionCallbackInfo<v8::Value>& info
(v8_class_or_partial, attribute.name)
if attribute.has_setter else 'nullptr' %}
{% endif %}
-{% set getter_callback_for_main_world =
- '%sForMainWorld' % getter_callback
- if attribute.is_per_world_bindings else 'nullptr' %}
-{% set setter_callback_for_main_world =
- '%sForMainWorld' % setter_callback
- if attribute.is_per_world_bindings and attribute.has_setter else 'nullptr' %}
{% set wrapper_type_info =
'const_cast<WrapperTypeInfo*>(&V8%s::wrapperTypeInfo)' % attribute.constructor_type
if attribute.constructor_type else 'nullptr' %}
@@ -492,19 +486,16 @@ const v8::FunctionCallbackInfo<v8::Value>& info
'nullptr' %}
{% set holder_check = 'V8DOMConfiguration::DoNotCheckHolder'
if attribute.is_lenient_this else 'V8DOMConfiguration::CheckHolder' %}
-{% set attribute_configuration_list = [
- '"%s"' % attribute.name,
- getter_callback,
- setter_callback,
- getter_callback_for_main_world,
- setter_callback_for_main_world,
- cached_accessor_callback,
- wrapper_type_info,
- property_attribute,
- property_location(attribute),
- holder_check,
- ] %}
-{{'{'}}{{attribute_configuration_list | join(', ')}}{{'}'}}
+{% if attribute.is_per_world_bindings %}
+{% set getter_callback_for_main_world = '%sForMainWorld' % getter_callback %}
+{% set setter_callback_for_main_world =
+ '%sForMainWorld' % setter_callback
+ if attribute.has_setter else 'nullptr' %}
+{"{{attribute.name}}", {{getter_callback_for_main_world}}, {{setter_callback_for_main_world}}, {{cached_accessor_callback}}, {{wrapper_type_info}}, {{property_attribute}}, {{property_location(attribute)}}, {{holder_check}}, V8DOMConfiguration::MainWorld},
+{"{{attribute.name}}", {{getter_callback}}, {{setter_callback}}, {{cached_accessor_callback}}, {{wrapper_type_info}}, {{property_attribute}}, {{property_location(attribute)}}, {{holder_check}}, V8DOMConfiguration::NonMainWorlds}
+{%- else %}
+{"{{attribute.name}}", {{getter_callback}}, {{setter_callback}}, {{cached_accessor_callback}}, {{wrapper_type_info}}, {{property_attribute}}, {{property_location(attribute)}}, {{holder_check}}, V8DOMConfiguration::AllWorlds}
+{%- endif %}
{%- endmacro %}
{##############################################################################}
@@ -513,8 +504,11 @@ const v8::FunctionCallbackInfo<v8::Value>& info
{% filter exposed(attribute.exposed_test) %}
{% filter secure_context(attribute.secure_context_test) %}
{% filter runtime_enabled(attribute.runtime_enabled_feature_name) %}
-const V8DOMConfiguration::AccessorConfiguration accessorConfiguration = {{attribute_configuration(attribute)}};
-V8DOMConfiguration::installAccessor(isolate, world, v8::Local<v8::Object>(), prototypeObject, interfaceObject, signature, accessorConfiguration);
+static const V8DOMConfiguration::AccessorConfiguration accessorConfiguration[] = {
+ {{attribute_configuration(attribute)}}
+};
+for (const auto& accessorConfig : accessorConfiguration)
+ V8DOMConfiguration::installAccessor(isolate, world, v8::Local<v8::Object>(), prototypeObject, interfaceObject, signature, accessorConfig);
{% endfilter %}{# runtime_enabled #}
{% endfilter %}{# secure_context #}
{% endfilter %}{# exposed #}

Powered by Google App Engine
This is Rietveld 408576698