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

Unified Diff: third_party/WebKit/Source/bindings/templates/interface.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/interface.cpp.tmpl
diff --git a/third_party/WebKit/Source/bindings/templates/interface.cpp.tmpl b/third_party/WebKit/Source/bindings/templates/interface.cpp.tmpl
index 9916135172fa078b40f439fa1cc4de9115cd307c..e5b1b0ece0756630a49bb0f25c06a4c75eb391d7 100644
--- a/third_party/WebKit/Source/bindings/templates/interface.cpp.tmpl
+++ b/third_party/WebKit/Source/bindings/templates/interface.cpp.tmpl
@@ -652,33 +652,34 @@ void {{v8_class}}::constructorCallback(const v8::FunctionCallbackInfo<v8::Value>
{##############################################################################}
-{% macro install_origin_safe_method(method, world_suffix, instance_template, prototype_template) %}
+{% macro install_origin_safe_method(method, instance_template, prototype_template) %}
{% from 'utilities.cpp.tmpl' import property_location %}
{# TODO(dcheng): Currently, bindings must create a function object for each
realm as a hack to support the incumbent realm. Clean this up when Blink
properly supports the incumbent realm. #}
{% set getter_callback =
- '%s::%sOriginSafeMethodGetterCallback%s' %
- (v8_class_or_partial, method.name, world_suffix) %}
+ '%s::%sOriginSafeMethodGetterCallback' %
+ (v8_class_or_partial, method.name) %}
{% set setter_callback =
'%s::%sOriginSafeMethodSetterCallback' % (v8_class_or_partial, cpp_class)
if not method.is_unforgeable else 'nullptr' %}
+{% set property_attribute =
+ 'static_cast<v8::PropertyAttribute>(%s)' %
+ ' | '.join(method.property_attributes or ['v8::None']) %}
+{% set holder_check = 'V8DOMConfiguration::CheckHolder' %}
+static const V8DOMConfiguration::AttributeConfiguration {{method.name}}OriginSafeAttributeConfiguration[] = {
{% if method.is_per_world_bindings %}
{% set getter_callback_for_main_world = '%sForMainWorld' % getter_callback %}
{% set setter_callback_for_main_world = '%sForMainWorld' % setter_callback
if not method.is_unforgeable else 'nullptr' %}
+ {"{{method.name}}", {{getter_callback_for_main_world}}, {{setter_callback_for_main_world}}, nullptr, &{{v8_class}}::wrapperTypeInfo, {{property_attribute}}, {{property_location(method)}}, {{holder_check}}, V8DOMConfiguration::MainWorld},
+ {"{{method.name}}", {{getter_callback}}, {{setter_callback}}, nullptr, &{{v8_class}}::wrapperTypeInfo, {{property_attribute}}, {{property_location(method)}}, {{holder_check}}, V8DOMConfiguration::NonMainWorlds}}
{% else %}
-{% set getter_callback_for_main_world = 'nullptr' %}
-{% set setter_callback_for_main_world = 'nullptr' %}
+ {"{{method.name}}", {{getter_callback}}, {{setter_callback}}, nullptr, &{{v8_class}}::wrapperTypeInfo, {{property_attribute}}, {{property_location(method)}}, {{holder_check}}, V8DOMConfiguration::AllWorlds}
{% endif %}
-{% set property_attribute =
- 'static_cast<v8::PropertyAttribute>(%s)' %
- ' | '.join(method.property_attributes or ['v8::None']) %}
-{% set holder_check = 'V8DOMConfiguration::CheckHolder' %}
-const V8DOMConfiguration::AttributeConfiguration {{method.name}}OriginSafeAttributeConfiguration = {
- "{{method.name}}", {{getter_callback}}, {{setter_callback}}, {{getter_callback_for_main_world}}, {{setter_callback_for_main_world}}, nullptr, &{{v8_class}}::wrapperTypeInfo, {{property_attribute}}, {{property_location(method)}}, {{holder_check}}
};
-V8DOMConfiguration::installAttribute(isolate, world, {{instance_template}}, {{prototype_template}}, {{method.name}}OriginSafeAttributeConfiguration);
+for (const auto& attributeConfig : {{method.name}}OriginSafeAttributeConfiguration)
+ V8DOMConfiguration::installAttribute(isolate, world, {{instance_template}}, {{prototype_template}}, attributeConfig);
{%- endmacro %}

Powered by Google App Engine
This is Rietveld 408576698