OLD | NEW |
1 {##############################################################################} | 1 {##############################################################################} |
2 {% macro attribute_getter(attribute, world_suffix) %} | 2 {% macro attribute_getter(attribute, world_suffix) %} |
3 {% filter conditional(attribute.conditional_string) %} | 3 {% filter conditional(attribute.conditional_string) %} |
4 static void {{attribute.name}}AttributeGetter{{world_suffix}}( | 4 static void {{attribute.name}}AttributeGetter{{world_suffix}}( |
5 {%- if attribute.is_expose_js_accessors %} | 5 {%- if attribute.is_expose_js_accessors %} |
6 const v8::FunctionCallbackInfo<v8::Value>& info | 6 const v8::FunctionCallbackInfo<v8::Value>& info |
7 {%- else %} | 7 {%- else %} |
8 const v8::PropertyCallbackInfo<v8::Value>& info | 8 const v8::PropertyCallbackInfo<v8::Value>& info |
9 {%- endif %}) | 9 {%- endif %}) |
10 { | 10 { |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
88 if ({{attribute.cpp_value}} && DOMDataStore::setReturnValueFromWrapper{{worl
d_suffix}}<V8{{attribute.idl_type}}>(info.GetReturnValue(), {{attribute.cpp_valu
e}}.get())) | 88 if ({{attribute.cpp_value}} && DOMDataStore::setReturnValueFromWrapper{{worl
d_suffix}}<V8{{attribute.idl_type}}>(info.GetReturnValue(), {{attribute.cpp_valu
e}}.get())) |
89 return; | 89 return; |
90 v8::Handle<v8::Value> wrapper = toV8({{attribute.cpp_value}}.get(), holder,
info.GetIsolate()); | 90 v8::Handle<v8::Value> wrapper = toV8({{attribute.cpp_value}}.get(), holder,
info.GetIsolate()); |
91 if (!wrapper.IsEmpty()) { | 91 if (!wrapper.IsEmpty()) { |
92 V8HiddenValue::setHiddenValue(info.GetIsolate(), holder, v8AtomicString(
info.GetIsolate(), "{{attribute.name}}"), wrapper); | 92 V8HiddenValue::setHiddenValue(info.GetIsolate(), holder, v8AtomicString(
info.GetIsolate(), "{{attribute.name}}"), wrapper); |
93 {{attribute.v8_set_return_value}}; | 93 {{attribute.v8_set_return_value}}; |
94 } | 94 } |
95 {% elif world_suffix %} | 95 {% elif world_suffix %} |
96 {{attribute.v8_set_return_value_for_main_world}}; | 96 {{attribute.v8_set_return_value_for_main_world}}; |
97 {% else %} | 97 {% else %} |
| 98 {% if attribute.use_output_parameter_for_result %} |
| 99 {{attribute.cpp_type}} result; |
| 100 {{attribute.cpp_value}}; |
| 101 {% endif %} |
98 {{attribute.v8_set_return_value}}; | 102 {{attribute.v8_set_return_value}}; |
99 {% endif %} | 103 {% endif %} |
100 } | 104 } |
101 {% endfilter %} | 105 {% endfilter %} |
102 {% endmacro %} | 106 {% endmacro %} |
103 | 107 |
104 {######################################} | 108 {######################################} |
105 {% macro release_only_check(reflect_only_values, reflect_missing, | 109 {% macro release_only_check(reflect_only_values, reflect_missing, |
106 reflect_invalid, reflect_empty, cpp_value) %} | 110 reflect_invalid, reflect_empty, cpp_value) %} |
107 {# Attribute is limited to only known values: check that the attribute value is | 111 {# Attribute is limited to only known values: check that the attribute value is |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
216 {# Type checking #} | 220 {# Type checking #} |
217 {% if attribute.has_type_checking_interface %} | 221 {% if attribute.has_type_checking_interface %} |
218 {# Type checking for interface types (if interface not implemented, throw | 222 {# Type checking for interface types (if interface not implemented, throw |
219 TypeError), per http://www.w3.org/TR/WebIDL/#es-interface #} | 223 TypeError), per http://www.w3.org/TR/WebIDL/#es-interface #} |
220 if ({% if attribute.is_nullable %}!isUndefinedOrNull(v8Value) && {% endif %}
!V8{{attribute.idl_type}}::hasInstance(v8Value, info.GetIsolate())) { | 224 if ({% if attribute.is_nullable %}!isUndefinedOrNull(v8Value) && {% endif %}
!V8{{attribute.idl_type}}::hasInstance(v8Value, info.GetIsolate())) { |
221 exceptionState.throwTypeError("The provided value is not of type '{{attr
ibute.idl_type}}'."); | 225 exceptionState.throwTypeError("The provided value is not of type '{{attr
ibute.idl_type}}'."); |
222 exceptionState.throwIfNeeded(); | 226 exceptionState.throwIfNeeded(); |
223 return; | 227 return; |
224 } | 228 } |
225 {% endif %} | 229 {% endif %} |
| 230 {% if attribute.use_output_parameter_for_result %} |
| 231 {{attribute.cpp_type}} cppValue; |
| 232 {% endif %} |
226 {# impl #} | 233 {# impl #} |
227 {% if attribute.put_forwards %} | 234 {% if attribute.put_forwards %} |
228 {{cpp_class}}* proxyImpl = {{v8_class}}::toImpl(holder); | 235 {{cpp_class}}* proxyImpl = {{v8_class}}::toImpl(holder); |
229 {{attribute.cpp_type}} impl = WTF::getPtr(proxyImpl->{{attribute.name}}()); | 236 {{attribute.cpp_type}} impl = WTF::getPtr(proxyImpl->{{attribute.name}}()); |
230 if (!impl) | 237 if (!impl) |
231 return; | 238 return; |
232 {% elif not attribute.is_static %} | 239 {% elif not attribute.is_static %} |
233 {{cpp_class}}* impl = {{v8_class}}::toImpl(holder); | 240 {{cpp_class}}* impl = {{v8_class}}::toImpl(holder); |
234 {% endif %} | 241 {% endif %} |
235 {% if attribute.idl_type == 'EventHandler' and interface_name == 'Window' %} | 242 {% if attribute.idl_type == 'EventHandler' and interface_name == 'Window' %} |
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
427 access_control, | 434 access_control, |
428 property_attribute, | 435 property_attribute, |
429 only_exposed_to_private_script, | 436 only_exposed_to_private_script, |
430 ] %} | 437 ] %} |
431 {% if not attribute.is_expose_js_accessors %} | 438 {% if not attribute.is_expose_js_accessors %} |
432 {% set attribute_configuration_list = attribute_configuration_list | 439 {% set attribute_configuration_list = attribute_configuration_list |
433 + [on_prototype] %} | 440 + [on_prototype] %} |
434 {% endif %} | 441 {% endif %} |
435 {{'{'}}{{attribute_configuration_list | join(', ')}}{{'}'}} | 442 {{'{'}}{{attribute_configuration_list | join(', ')}}{{'}'}} |
436 {%- endmacro %} | 443 {%- endmacro %} |
OLD | NEW |