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

Unified Diff: Source/bindings/dart/scripts/templates/interface_cpp.template

Issue 400893007: Add Custom Named property getters for cssStyleDeclaration to determine the existence of a property. (Closed) Base URL: svn://svn.chromium.org/blink/branches/dart/1985
Patch Set: Created 6 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: 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..05fe7741e750e1970e856d1646e966af0396ac02 100644
--- a/Source/bindings/dart/scripts/templates/interface_cpp.template
+++ b/Source/bindings/dart/scripts/templates/interface_cpp.template
@@ -2,20 +2,9 @@
{##############################################################################}
-{% 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) -%}
+{% macro resolver_callback_string(class_name, name, argument) -%}
{% set name = '__' + name + '___' -%}
{% set count = 1 -%}
{{class_name}}_{{name}}Callback_RESOLVER_STRING_{{count}}_{{argument}}
@@ -62,7 +51,7 @@ fail:
{##############################################################################}
{% macro generate_index_getter_resolver_body(dart_class, class_name, indexed_property_getter) %}
- {% set resolver_string = resolver_indexed_name(class_name, 'getter', 'unsigned long') %}
+ {% set resolver_string = resolver_callback_string(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;
@@ -70,29 +59,64 @@ if (argumentCount == 2 && name == "{{resolver_string}}") {
}
{% endmacro %}
+{##############################################################################}
+{% macro generate_named_getter_resolver_body(dart_class, class_name, named_property_getter) %}
+ {% set resolver_string = resolver_callback_string(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) %}
-{% set resolver_string = resolver_indexed_name(interface_name, 'getter', 'unsigned long') %}
+{% set resolver_string = resolver_callback_string(interface_name, 'getter', 'unsigned long') %}
if (nf == {{dart_class}}Internal::indexedPropertyGetter) {
return reinterpret_cast<const uint8_t*>("{{resolver_string}}");
}
{% endmacro %}
-
+{##############################################################################}
+{% macro generate_symbolizer_named_property_getter_body(dart_class, interface_name) %}
+{% set resolver_string = resolver_callback_string(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 %}

Powered by Google App Engine
This is Rietveld 408576698