OLD | NEW |
1 {% extends 'interface_base_cpp.template' %} | 1 {% extends 'interface_base_cpp.template' %} |
2 | 2 |
3 | 3 |
4 {##############################################################################} | 4 {##############################################################################} |
5 {% macro generate_index_getter_resolver_body(dart_class, class_name, indexed_pro
perty_getter) %} | |
6 {% set resolver_string = resolver_indexed_name(class_name, 'getter', 'unsigned
long') %} | |
7 {# TODO(terry): Should change to 'Getter' for consistency, matches dart:html for
indexed props and handle custom. #} | |
8 if (argumentCount == 2 && name == "{{resolver_string}}") { | |
9 *autoSetupScope = true; | |
10 return {{dart_class}}Internal::indexedPropertyGetter; | |
11 } | |
12 {% endmacro %} | |
13 | |
14 | |
15 {##############################################################################} | |
16 {# Mangled Blink name used by resolver to map to static function. #} | 5 {# Mangled Blink name used by resolver to map to static function. #} |
17 {##############################################################################} | 6 {##############################################################################} |
18 {% macro resolver_indexed_name(class_name, name, argument) -%} | 7 {% macro resolver_callback_string(class_name, name, argument) -%} |
19 {% set name = '__' + name + '___' -%} | 8 {% set name = '__' + name + '___' -%} |
20 {% set count = 1 -%} | 9 {% set count = 1 -%} |
21 {{class_name}}_{{name}}Callback_RESOLVER_STRING_{{count}}_{{argument}} | 10 {{class_name}}_{{name}}Callback_RESOLVER_STRING_{{count}}_{{argument}} |
22 {%- endmacro %} | 11 {%- endmacro %} |
23 | 12 |
24 | 13 |
25 {# TODO(terry): Implement setter and deleter too #} | 14 {# TODO(terry): Implement setter and deleter too #} |
26 | 15 |
27 | 16 |
28 {##############################################################################} | 17 {##############################################################################} |
(...skipping 26 matching lines...) Expand all Loading... |
55 ASSERT_NOT_REACHED(); | 44 ASSERT_NOT_REACHED(); |
56 } | 45 } |
57 | 46 |
58 {% endif %} | 47 {% endif %} |
59 {# TODO(terry): Should handle custom index getter - none today. #} | 48 {# TODO(terry): Should handle custom index getter - none today. #} |
60 {% endblock %} | 49 {% endblock %} |
61 | 50 |
62 | 51 |
63 {##############################################################################} | 52 {##############################################################################} |
64 {% macro generate_index_getter_resolver_body(dart_class, class_name, indexed_pro
perty_getter) %} | 53 {% macro generate_index_getter_resolver_body(dart_class, class_name, indexed_pro
perty_getter) %} |
65 {% set resolver_string = resolver_indexed_name(class_name, 'getter', 'unsigned
long') %} | 54 {% set resolver_string = resolver_callback_string(class_name, 'getter', 'unsig
ned long') %} |
66 {# TODO(terry): Should change to 'Getter' for consistency, matches dart:html for
indexed props and handle custom. #} | 55 {# TODO(terry): Should change to 'Getter' for consistency, matches dart:html for
indexed props and handle custom. #} |
67 if (argumentCount == 2 && name == "{{resolver_string}}") { | 56 if (argumentCount == 2 && name == "{{resolver_string}}") { |
68 *autoSetupScope = true; | 57 *autoSetupScope = true; |
69 return {{dart_class}}Internal::indexedPropertyGetter; | 58 return {{dart_class}}Internal::indexedPropertyGetter; |
70 } | 59 } |
71 {% endmacro %} | 60 {% endmacro %} |
72 | 61 |
| 62 {##############################################################################} |
| 63 {% macro generate_named_getter_resolver_body(dart_class, class_name, named_prope
rty_getter) %} |
| 64 {% set resolver_string = resolver_callback_string(class_name, 'getter', 'DOMSt
ring') %} |
| 65 // TODO(terry/efortuna): v8 implements PropetyGetter, PropertyEnumerator, and |
| 66 // PropertyQuery. On the Dart side we currently only implement |
| 67 // propertyQuery. Implement the other two. |
| 68 if (argumentCount == 2 && name == "{{resolver_string}}") { |
| 69 *autoSetupScope = true; |
| 70 return {{dart_class}}Internal::propertyQuery; |
| 71 } |
| 72 {% endmacro %} |
73 | 73 |
74 {##############################################################################} | 74 {##############################################################################} |
75 {% block indexed_property_getter_resolver %} | 75 {% block indexed_property_getter_resolver %} |
76 {# TODO(terry): Support all indexed and named properties today only indexed
getter is supported. #} | 76 {# TODO(terry): Support all indexed and named properties today only indexed
getter is supported. #} |
77 {# Resolver indexed/named properties #} | 77 {# Resolver indexed properties #} |
78 {% if indexed_property_getter and not indexed_property_getter.is_custom %} | 78 {% if indexed_property_getter and not indexed_property_getter.is_custom %} |
79 {{generate_index_getter_resolver_body(dart_class, interface_name, indexed_pr
operty_getter) | indent(4)}} | 79 {{generate_index_getter_resolver_body(dart_class, interface_name, indexed_pr
operty_getter) | indent(4)}} |
80 {% endif %} | 80 {% endif %} |
81 {% endblock %} | 81 {% endblock %} |
82 | 82 |
| 83 {##############################################################################} |
| 84 {% block named_property_getter_resolver %} |
| 85 {# Resolver named properties #} |
| 86 {% if named_property_getter %} |
| 87 {{generate_named_getter_resolver_body(dart_class, interface_name, named_prop
erty_getter) | indent(4)}} |
| 88 {% endif %} |
| 89 {% endblock %} |
| 90 |
83 | 91 |
84 {##############################################################################} | 92 {##############################################################################} |
85 {% macro generate_symbolizer_indexed_property_getter_body(dart_class, interface_
name) %} | 93 {% macro generate_symbolizer_indexed_property_getter_body(dart_class, interface_
name) %} |
86 {% set resolver_string = resolver_indexed_name(interface_name, 'getter', 'unsign
ed long') %} | 94 {% set resolver_string = resolver_callback_string(interface_name, 'getter', 'uns
igned long') %} |
87 if (nf == {{dart_class}}Internal::indexedPropertyGetter) { | 95 if (nf == {{dart_class}}Internal::indexedPropertyGetter) { |
88 return reinterpret_cast<const uint8_t*>("{{resolver_string}}"); | 96 return reinterpret_cast<const uint8_t*>("{{resolver_string}}"); |
89 } | 97 } |
90 {% endmacro %} | 98 {% endmacro %} |
91 | 99 |
92 | 100 {##############################################################################} |
| 101 {% macro generate_symbolizer_named_property_getter_body(dart_class, interface_na
me) %} |
| 102 {% set resolver_string = resolver_callback_string(interface_name, 'getter', 'DOM
String') %} |
| 103 // TODO(terry/efortuna): v8 implements PropetyGetter, PropertyEnumerator, an
d |
| 104 // PropertyQuery. On the Dart side we currently only implement |
| 105 // propertyQuery. Implement the other two. |
| 106 if (nf == {{dart_class}}Internal::propertyQuery) { |
| 107 return reinterpret_cast<const uint8_t*>("{{resolver_string}}"); |
| 108 } |
| 109 {% endmacro %} |
93 {##############################################################################} | 110 {##############################################################################} |
94 {% block generate_symbolizer_indexed_property_getter %} | 111 {% block generate_symbolizer_indexed_property_getter %} |
95 {% if indexed_property_getter and not indexed_property_getter.is_custom %} | 112 {% if indexed_property_getter and not indexed_property_getter.is_custom %} |
96 {{generate_symbolizer_indexed_property_getter_body(dart_class, interface_name)
}} | 113 {{generate_symbolizer_indexed_property_getter_body(dart_class, interface_name)
}} |
97 {% endif %} | 114 {% endif %} |
98 {% endblock %} | 115 {% endblock %} |
| 116 |
| 117 {##############################################################################} |
| 118 {% block generate_symbolizer_named_property_getter %} |
| 119 {% if named_property_getter %} |
| 120 {{generate_symbolizer_named_property_getter_body(dart_class, interface_name)}} |
| 121 {% endif %} |
| 122 {% endblock %} |
OLD | NEW |