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

Side by Side Diff: Source/bindings/templates/methods.cpp

Issue 600863002: IDL: Make SerializedScriptValue arguments less of a special case (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 3 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 unified diff | Download patch
OLDNEW
1 {##############################################################################} 1 {##############################################################################}
2 {% macro generate_method(method, world_suffix) %} 2 {% macro generate_method(method, world_suffix) %}
3 {% filter conditional(method.conditional_string) %} 3 {% filter conditional(method.conditional_string) %}
4 static void {{method.name}}{{method.overload_index}}Method{{world_suffix}}(const v8::FunctionCallbackInfo<v8::Value>& info) 4 static void {{method.name}}{{method.overload_index}}Method{{world_suffix}}(const v8::FunctionCallbackInfo<v8::Value>& info)
5 { 5 {
6 {# Local variables #} 6 {# Local variables #}
7 {% if method.has_exception_state %} 7 {% if method.has_exception_state %}
8 ExceptionState exceptionState(ExceptionState::ExecutionContext, "{{method.na me}}", "{{interface_name}}", info.Holder(), info.GetIsolate()); 8 ExceptionState exceptionState(ExceptionState::ExecutionContext, "{{method.na me}}", "{{interface_name}}", info.Holder(), info.GetIsolate());
9 {% endif %} 9 {% endif %}
10 {# Overloaded methods have length checked during overload resolution #} 10 {# Overloaded methods have length checked during overload resolution #}
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 {% else %}{# argument.is_optional #} 152 {% else %}{# argument.is_optional #}
153 if (info.Length() <= {{argument.index}} || !{% if argument.is_nullable %}(info[{ {argument.index}}]->IsFunction() || info[{{argument.index}}]->IsNull()){% else % }info[{{argument.index}}]->IsFunction(){% endif %}) { 153 if (info.Length() <= {{argument.index}} || !{% if argument.is_nullable %}(info[{ {argument.index}}]->IsFunction() || info[{{argument.index}}]->IsNull()){% else % }info[{{argument.index}}]->IsFunction(){% endif %}) {
154 {{throw_type_error(method, 154 {{throw_type_error(method,
155 '"The callback provided as parameter %s is not a function."' % 155 '"The callback provided as parameter %s is not a function."' %
156 (argument.index + 1)) | indent }} 156 (argument.index + 1)) | indent }}
157 return; 157 return;
158 } 158 }
159 {{argument.name}} = {% if argument.is_nullable %}info[{{argument.index}}]->IsNul l() ? nullptr : {% endif %}V8{{argument.idl_type}}::create(v8::Handle<v8::Functi on>::Cast(info[{{argument.index}}]), ScriptState::current(info.GetIsolate())); 159 {{argument.name}} = {% if argument.is_nullable %}info[{{argument.index}}]->IsNul l() ? nullptr : {% endif %}V8{{argument.idl_type}}::create(v8::Handle<v8::Functi on>::Cast(info[{{argument.index}}]), ScriptState::current(info.GetIsolate()));
160 {% endif %}{# argument.is_optional #} 160 {% endif %}{# argument.is_optional #}
161 {% endif %}{# argument.idl_type == 'EventListener' #} 161 {% endif %}{# argument.idl_type == 'EventListener' #}
162 {% elif argument.idl_type == 'SerializedScriptValue' %}
163 {{argument.name}} = SerializedScriptValue::create(info[{{argument.index}}], 0, 0 , exceptionState, info.GetIsolate());
164 if (exceptionState.hadException()) {
165 {{throw_from_exception_state(method)}};
166 return;
167 }
168 {% elif argument.is_variadic_wrapper_type %} 162 {% elif argument.is_variadic_wrapper_type %}
169 for (int i = {{argument.index}}; i < info.Length(); ++i) { 163 for (int i = {{argument.index}}; i < info.Length(); ++i) {
170 if (!V8{{argument.idl_type}}::hasInstance(info[i], info.GetIsolate())) { 164 if (!V8{{argument.idl_type}}::hasInstance(info[i], info.GetIsolate())) {
171 {{throw_type_error(method, '"parameter %s is not of type \'%s\'."' % 165 {{throw_type_error(method, '"parameter %s is not of type \'%s\'."' %
172 (argument.index + 1, argument.idl_type)) | in dent(8)}} 166 (argument.index + 1, argument.idl_type)) | in dent(8)}}
173 return; 167 return;
174 } 168 }
175 {{argument.name}}.append(V8{{argument.idl_type}}::toImpl(v8::Handle<v8::Obje ct>::Cast(info[i]))); 169 {{argument.name}}.append(V8{{argument.idl_type}}::toImpl(v8::Handle<v8::Obje ct>::Cast(info[i])));
176 } 170 }
177 {% elif argument.is_dictionary %} 171 {% elif argument.is_dictionary %}
(...skipping 449 matching lines...) Expand 10 before | Expand all | Expand 10 after
627 if method.is_per_world_bindings else '0' %} 621 if method.is_per_world_bindings else '0' %}
628 {% set property_attribute = 622 {% set property_attribute =
629 'static_cast<v8::PropertyAttribute>(%s)' % ' | '.join(method.property_attribut es) 623 'static_cast<v8::PropertyAttribute>(%s)' % ' | '.join(method.property_attribut es)
630 if method.property_attributes else 'v8::None' %} 624 if method.property_attributes else 'v8::None' %}
631 {% set only_exposed_to_private_script = 'V8DOMConfiguration::OnlyExposedToPrivat eScript' if method.only_exposed_to_private_script else 'V8DOMConfiguration::Expo sedToAllScripts' %} 625 {% set only_exposed_to_private_script = 'V8DOMConfiguration::OnlyExposedToPrivat eScript' if method.only_exposed_to_private_script else 'V8DOMConfiguration::Expo sedToAllScripts' %}
632 static const V8DOMConfiguration::MethodConfiguration {{method.name}}MethodConfig uration = { 626 static const V8DOMConfiguration::MethodConfiguration {{method.name}}MethodConfig uration = {
633 "{{method.name}}", {{method_callback}}, {{method_callback_for_main_world}}, {{method.length}}, {{only_exposed_to_private_script}}, 627 "{{method.name}}", {{method_callback}}, {{method_callback_for_main_world}}, {{method.length}}, {{only_exposed_to_private_script}},
634 }; 628 };
635 V8DOMConfiguration::installMethod({{method.function_template}}, {{method.signatu re}}, {{property_attribute}}, {{method.name}}MethodConfiguration, isolate); 629 V8DOMConfiguration::installMethod({{method.function_template}}, {{method.signatu re}}, {{property_attribute}}, {{method.name}}MethodConfiguration, isolate);
636 {%- endmacro %} 630 {%- endmacro %}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698