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

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

Issue 2873543002: First implementation of lazily cached accessor for DOM attributes. (Closed)
Patch Set: whitespace and renaming fixes 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
Index: third_party/WebKit/Source/bindings/templates/interface_base.cpp.tmpl
diff --git a/third_party/WebKit/Source/bindings/templates/interface_base.cpp.tmpl b/third_party/WebKit/Source/bindings/templates/interface_base.cpp.tmpl
index 62183474a1aecf3d163b4656fab6b9f56404d0a3..624215ac55184c8f52339e966deabd714619e5ef 100644
--- a/third_party/WebKit/Source/bindings/templates/interface_base.cpp.tmpl
+++ b/third_party/WebKit/Source/bindings/templates/interface_base.cpp.tmpl
@@ -77,8 +77,14 @@ static void (*{{method.name}}MethodForPartialInterface)(const v8::FunctionCallba
{##############################################################################}
{# Attributes #}
-{% from 'attributes.cpp.tmpl' import attribute_getter, attribute_setter with context %}
+{% from 'attributes.cpp.tmpl' import attribute_getter,
+ attribute_setter,
+ attribute_cache_init_callback,
+ with context %}
{% for attribute in attributes %}
+{% if attribute.is_lazy_cached_accessor %}
+{{attribute_cache_init_callback(attribute)}}
+{% endif %}
{% for world_suffix in attribute.world_suffixes %}
{% if not attribute.has_custom_getter and not attribute.constructor_type %}
{{attribute_getter(attribute, world_suffix)}}
@@ -369,11 +375,11 @@ static const V8DOMConfiguration::AttributeConfiguration {{v8_class}}LazyDataAttr
{% endblock %}
{##############################################################################}
{% block install_accessors %}
-{% from 'attributes.cpp.tmpl' import attribute_configuration with context %}
+{% from 'attributes.cpp.tmpl' import accessor_configuration with context %}
{% if accessors %}
static const V8DOMConfiguration::AccessorConfiguration {{v8_class}}Accessors[] = {
{% for accessor in accessors %}
- {{attribute_configuration(accessor) | indent(4)}},
+ {{accessor_configuration(accessor) | indent(4)}},
{% endfor %}
};
@@ -399,7 +405,9 @@ static const V8DOMConfiguration::MethodConfiguration {{v8_class}}Methods[] = {
{% block install_dom_template %}
{% if not is_array_buffer_or_view %}
{% from 'methods.cpp.tmpl' import install_custom_signature with context %}
-{% from 'attributes.cpp.tmpl' import attribute_configuration with context %}
+{% from 'attributes.cpp.tmpl' import accessor_configuration,
+ attribute_configuration,
+ with context %}
{% from 'constants.cpp.tmpl' import install_constants with context %}
{% from 'methods.cpp.tmpl' import method_configuration with context %}
{% if has_partial_interface or is_partial %}
@@ -488,7 +496,7 @@ static void install{{v8_class}}Template(v8::Isolate* isolate, const DOMWrapperWo
V8DOMConfiguration::InstallAttribute(isolate, world, instanceTemplate, prototypeTemplate, attributeConfig);
{% else %}
static const V8DOMConfiguration::AccessorConfiguration accessor{{attribute.name}}Configuration[] = {
- {{attribute_configuration(attribute) | indent(2)}}
+ {{accessor_configuration(attribute) | indent(2)}}
};
for (const auto& accessorConfig : accessor{{attribute.name}}Configuration)
V8DOMConfiguration::InstallAccessor(isolate, world, instanceTemplate, prototypeTemplate, interfaceTemplate, signature, accessorConfig);
@@ -616,7 +624,9 @@ static void install{{v8_class}}Template(v8::Isolate* isolate, const DOMWrapperWo
{##############################################################################}
{% block install_runtime_enabled %}
{% if needs_runtime_enabled_installer %}
-{% from 'attributes.cpp.tmpl' import attribute_configuration with context %}
+{% from 'attributes.cpp.tmpl' import accessor_configuration,
+ attribute_configuration,
+ with context %}
{% from 'methods.cpp.tmpl' import install_custom_signature with context %}
void {{v8_class_or_partial}}::installRuntimeEnabledFeatures(v8::Isolate* isolate, const DOMWrapperWorld& world, v8::Local<v8::Object> instance, v8::Local<v8::Object> prototype, v8::Local<v8::Function> interface) {
{% if runtime_enabled_feature_name %}
@@ -644,7 +654,7 @@ void {{v8_class_or_partial}}::installRuntimeEnabledFeatures(v8::Isolate* isolate
V8DOMConfiguration::InstallAttribute(isolate, world, instance, prototype, attributeConfig);
{% else %}
static const V8DOMConfiguration::AccessorConfiguration accessor{{attribute.name}}Configuration[] = {
- {{attribute_configuration(attribute) | indent(2)}}
+ {{accessor_configuration(attribute) | indent(2)}}
};
for (const auto& accessorConfig : accessor{{attribute.name}}Configuration)
V8DOMConfiguration::InstallAccessor(isolate, world, instance, prototype, interface, signature, accessorConfig);
@@ -686,7 +696,9 @@ void {{v8_class_or_partial}}::installRuntimeEnabledFeatures(v8::Isolate* isolate
{% endblock %}
{##############################################################################}
{% block origin_trials %}
-{% from 'attributes.cpp.tmpl' import attribute_configuration with context %}
+{% from 'attributes.cpp.tmpl' import accessor_configuration,
+ attribute_configuration,
+ with context %}
{% from 'constants.cpp.tmpl' import constant_configuration with context %}
{% from 'methods.cpp.tmpl' import method_configuration with context %}
{% for feature in origin_trial_features %}
@@ -706,7 +718,7 @@ void {{v8_class_or_partial}}::install{{feature.name}}(v8::Isolate* isolate, cons
V8DOMConfiguration::InstallAttribute(isolate, world, instance, prototype, attributeConfig);
{% else %}
static const V8DOMConfiguration::AccessorConfiguration accessor{{attribute.name}}Configuration[] = {
- {{attribute_configuration(attribute) | indent(2)}}
+ {{accessor_configuration(attribute) | indent(2)}}
};
for (const auto& accessorConfig : accessor{{attribute.name}}Configuration)
V8DOMConfiguration::InstallAccessor(isolate, world, instance, prototype, interface, signature, accessorConfig);

Powered by Google App Engine
This is Rietveld 408576698