| 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..dd70bb4a8d7a110ccdc80bca1729d18658caf455
|
| --- /dev/null
|
| +++ b/third_party/WebKit/Source/bindings/templates/external_reference_table.cpp.tmpl
|
| @@ -0,0 +1,123 @@
|
| +{% 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),
|
| + {% endif %}
|
| + {%- if interface.indexed_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 %}
|
| + 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 #}
|
|
|