Chromium Code Reviews| Index: Source/bindings/dart/scripts/templates/interface_cpp.template |
| diff --git a/Source/bindings/dart/scripts/templates/interface_cpp.template b/Source/bindings/dart/scripts/templates/interface_cpp.template |
| index 8d10b555bde43ec05566f8df7ae008bd6562fcd0..c4d01d05bd3c0aaf7ab0703229e237442b0d57cb 100644 |
| --- a/Source/bindings/dart/scripts/templates/interface_cpp.template |
| +++ b/Source/bindings/dart/scripts/templates/interface_cpp.template |
| @@ -2,17 +2,6 @@ |
| {##############################################################################} |
| -{% macro generate_index_getter_resolver_body(dart_class, class_name, indexed_property_getter) %} |
| - {% set resolver_string = resolver_indexed_name(class_name, 'getter', 'unsigned long') %} |
| -{# TODO(terry): Should change to 'Getter' for consistency, matches dart:html for indexed props and handle custom. #} |
| -if (argumentCount == 2 && name == "{{resolver_string}}") { |
| - *autoSetupScope = true; |
| - return {{dart_class}}Internal::indexedPropertyGetter; |
| -} |
| -{% endmacro %} |
| - |
| - |
| -{##############################################################################} |
| {# Mangled Blink name used by resolver to map to static function. #} |
| {##############################################################################} |
| {% macro resolver_indexed_name(class_name, name, argument) -%} |
|
Leaf
2014/07/22 17:02:29
Since this is now shared by indexed and named prop
|
| @@ -70,16 +59,35 @@ if (argumentCount == 2 && name == "{{resolver_string}}") { |
| } |
| {% endmacro %} |
| +{##############################################################################} |
| +{% macro generate_named_getter_resolver_body(dart_class, class_name, named_property_getter) %} |
| + {% set resolver_string = resolver_indexed_name(class_name, 'getter', 'DOMString') %} |
| +// TODO(terry/efortuna): v8 implements PropetyGetter, PropertyEnumerator, and |
| +// PropertyQuery. On the Dart side we currently only implement |
| +// propertyQuery. Implement the other two. |
| +if (argumentCount == 2 && name == "{{resolver_string}}") { |
| + *autoSetupScope = true; |
| + return {{dart_class}}Internal::propertyQuery; |
| +} |
| +{% endmacro %} |
| {##############################################################################} |
| {% block indexed_property_getter_resolver %} |
| {# TODO(terry): Support all indexed and named properties today only indexed getter is supported. #} |
| - {# Resolver indexed/named properties #} |
| + {# Resolver indexed properties #} |
| {% if indexed_property_getter and not indexed_property_getter.is_custom %} |
| {{generate_index_getter_resolver_body(dart_class, interface_name, indexed_property_getter) | indent(4)}} |
| {% endif %} |
| {% endblock %} |
| +{##############################################################################} |
| +{% block named_property_getter_resolver %} |
| + {# Resolver named properties #} |
| + {% if named_property_getter %} |
| + {{generate_named_getter_resolver_body(dart_class, interface_name, named_property_getter) | indent(4)}} |
| + {% endif %} |
| +{% endblock %} |
| + |
| {##############################################################################} |
| {% macro generate_symbolizer_indexed_property_getter_body(dart_class, interface_name) %} |
| @@ -89,10 +97,26 @@ if (argumentCount == 2 && name == "{{resolver_string}}") { |
| } |
| {% endmacro %} |
| - |
| +{##############################################################################} |
| +{% macro generate_symbolizer_named_property_getter_body(dart_class, interface_name) %} |
| +{% set resolver_string = resolver_indexed_name(interface_name, 'getter', 'DOMString') %} |
| + // TODO(terry/efortuna): v8 implements PropetyGetter, PropertyEnumerator, and |
| + // PropertyQuery. On the Dart side we currently only implement |
| + // propertyQuery. Implement the other two. |
| + if (nf == {{dart_class}}Internal::propertyQuery) { |
| + return reinterpret_cast<const uint8_t*>("{{resolver_string}}"); |
| + } |
| +{% endmacro %} |
| {##############################################################################} |
| {% block generate_symbolizer_indexed_property_getter %} |
| {% if indexed_property_getter and not indexed_property_getter.is_custom %} |
| {{generate_symbolizer_indexed_property_getter_body(dart_class, interface_name)}} |
| {% endif %} |
| {% endblock %} |
| + |
| +{##############################################################################} |
| +{% block generate_symbolizer_named_property_getter %} |
| +{% if named_property_getter %} |
| + {{generate_symbolizer_named_property_getter_body(dart_class, interface_name)}} |
| +{% endif %} |
| +{% endblock %} |