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

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

Issue 2841443005: [Bindings] Create and use V8 context snapshots (Closed)
Patch Set: Rebase Created 3 years, 5 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/external_reference_table.cpp.tmpl
diff --git a/third_party/WebKit/Source/bindings/templates/external_reference_table.cpp.tmpl b/third_party/WebKit/Source/bindings/templates/external_reference_table.cpp.tmpl
new file mode 100644
index 0000000000000000000000000000000000000000..96d05bb32d885ba650b0a1c4f5525b3b1e983334
--- /dev/null
+++ b/third_party/WebKit/Source/bindings/templates/external_reference_table.cpp.tmpl
@@ -0,0 +1,125 @@
+{% filter format_blink_cpp_source_code %}
+
+{% include 'copyright_block.txt' %}
+
+#include "bindings/modules/v8/{{class}}.h"
+
+#include <cstdint>
+
+{% for include_file in include_files %}
+#include "{{include_file}}"
+{% endfor %}
+
+namespace blink {
+
+intptr_t* {{class}}::GetTable() {
+ static intptr_t reference_table[] = {
+ {% for interface in interfaces %}
+ {% if not interface.is_array_buffer_or_view %}
+ {% set v8_class = interface.v8_name %}
+
+ {# Attributes #}
+ {%- for attribute in interface.attributes %}
+ {%- for world_suffix in attribute.world_suffixes %}
+ {% if not attribute.constructor_type %}
+ reinterpret_cast<intptr_t>({{v8_class}}::{{attribute.name}}AttributeGetterCallback{{world_suffix}}),
+ {% elif attribute.needs_constructor_getter_callback %}
+ reinterpret_cast<intptr_t>({{v8_class}}::{{attribute.name}}ConstructorGetterCallback{{world_suffix}}),
+ {% elif attribute.is_named_constructor %}
+ reinterpret_cast<intptr_t>(V8{{attribute.constructor_type}}::NamedConstructorAttributeGetter{{world_suffix}}),
+ {% endif %}
+ {% if attribute.has_setter %}
+ reinterpret_cast<intptr_t>({{v8_class}}::{{attribute.name}}AttributeSetterCallback{{world_suffix}}),
+ {% endif %}
+ {%- endfor %}{# world_suffix #}
+ {%- endfor %}{# attributes #}
+
+ {# Methods / Operations #}
+ {% for method in interface.methods %}
+ {%- for world_suffix in method.world_suffixes %}
+ {% if not method.overload_index or method.overloads %}
+ {% if (method.overloads and method.overloads.visible and
+ (not method.overloads.has_partial_overloads or not interface.is_partial)) or
+ (not method.overloads and method.visible) %}
+ {# TODO(bashi): Remove this 'if' condition when crbug.com/630986 is fixed. #}
+ {% if not interface.is_callback %}
+ reinterpret_cast<intptr_t>({{v8_class}}::{{method.name}}MethodCallback{{world_suffix}}),
+ {% endif %}
+ {% endif %}
+ {% endif %}{# overload(_index) #}
+ {% if method.is_cross_origin and method.visible %}
+ reinterpret_cast<intptr_t>({{v8_class}}::{{method.name}}OriginSafeMethodGetterCallback{{world_suffix}}),
+ {% endif%}
+ {% endfor %}
+ {% endfor %}{# method #}
+ {% if interface.has_origin_safe_method_setter %}
+ reinterpret_cast<intptr_t>({{v8_class}}::{{interface.name}}OriginSafeMethodSetterCallback),
+ {% endif %}
+ {% if interface.has_cross_origin_named_getter %}
+ reinterpret_cast<intptr_t>({{v8_class}}::crossOriginNamedGetter),
+ {% endif %}
+ {% if interface.has_cross_origin_named_setter %}
+ reinterpret_cast<intptr_t>({{v8_class}}::crossOriginNamedSetter),
+ {% endif %}
+ {% if interface.has_cross_origin_named_enumerator %}
+ reinterpret_cast<intptr_t>({{v8_class}}::crossOriginNamedEnumerator),
+ {% endif %}
+ {% if interface.has_cross_origin_indexed_getter %}
+ reinterpret_cast<intptr_t>({{v8_class}}::crossOriginIndexedGetter),
+ {% endif %}
+ {% if interface.has_security_check %}
+ reinterpret_cast<intptr_t>({{v8_class}}::securityCheck),
+ {% endif %}
+
+ {# Other properties #}
+ {% if interface.has_constructor_callback %}
+ reinterpret_cast<intptr_t>({{v8_class}}::constructorCallback),
+ {% endif %}
+ {% if interface.named_property_getter %}
+ reinterpret_cast<intptr_t>({{v8_class}}::namedPropertyGetterCallback),
+ {% endif %}
+ {%- if interface.named_property_setter %}
+ reinterpret_cast<intptr_t>({{v8_class}}::namedPropertySetterCallback),
+ {% endif %}
+ {%- if interface.named_property_deleter %}
+ reinterpret_cast<intptr_t>({{v8_class}}::namedPropertyDeleterCallback),
+ {% endif %}
+ {%- if interface.named_property_getter and interface.named_property_getter.is_enumerable %}
+ reinterpret_cast<intptr_t>({{v8_class}}::namedPropertyQueryCallback),
+ reinterpret_cast<intptr_t>({{v8_class}}::namedPropertyEnumeratorCallback),
+ {% endif %}
+ {%- if interface.indexed_property_getter %}
+ reinterpret_cast<intptr_t>({{v8_class}}::indexedPropertyGetterCallback),
+ reinterpret_cast<intptr_t>({{v8_class}}::indexedPropertyDefinerCallback),
+ reinterpret_cast<intptr_t>({{v8_class}}::indexedPropertyDescriptorCallback),
+ {% endif %}
+ {%- if interface.indexed_property_getter or interface.named_property_setter %}
+ reinterpret_cast<intptr_t>({{v8_class}}::indexedPropertySetterCallback),
+ {% endif %}
+ {%- if interface.indexed_property_deleter %}
+ reinterpret_cast<intptr_t>({{v8_class}}::indexedPropertyDeleterCallback),
+ {% endif %}
+ {% if interface.has_security_check_function %}
+ reinterpret_cast<intptr_t>({{v8_class}}::securityCheck),
+ {%- endif %}
+ {% endif %}{# not is_array_buffer_or_view #}
+
+ {% if not interface.is_partial or is_snapshotted %}
+ reinterpret_cast<intptr_t>(&{{interface.v8_name}}::wrapperTypeInfo),
+ {% endif %}
+ {% if interface.named_constructor %}
+ reinterpret_cast<intptr_t>(&{{interface.v8_name}}Constructor::wrapperTypeInfo),
+ {% endif %}
+ {% endfor %}{# interfaces #}
+
+ reinterpret_cast<intptr_t>(V8ObjectConstructor::IsValidConstructorMode),
+ reinterpret_cast<intptr_t>(V8ConstructorAttributeGetter),
+ 0 // terminate with a null
+ };
+
+ return reference_table;
+}
+
+} // namespace blink
+
+{% endfilter %}{# format_blink_cpp_source_code #}

Powered by Google App Engine
This is Rietveld 408576698