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 %} |