blob: c74766037e492bbf3a300ed5a4a4d757764703b8 [file] [log] [blame]
{% 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[] = {
#if !defined(OS_ANDROID)
// Android is sensitive on its APK size, and this table improves it.
// So we drop the table entries until the V8 context snapshot feature
// is released on Android.
{% 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),
#endif // OS_ANDROID
0 // terminate with a null
};
return reference_table;
}
} // namespace blink
{% endfilter %}{# format_blink_cpp_source_code #}