OLD | NEW |
1 {% from 'utilities.cpp.tmpl' import declare_enum_validation_variable, v8_value_t
o_local_cpp_value %} | 1 {% from 'utilities.cpp.tmpl' import declare_enum_validation_variable, v8_value_t
o_local_cpp_value %} |
2 | 2 |
3 {##############################################################################} | 3 {##############################################################################} |
4 {% macro generate_method(method, world_suffix) %} | 4 {% macro generate_method(method, world_suffix) %} |
5 static void {{method.name}}{{method.overload_index}}Method{{world_suffix}}(const
v8::FunctionCallbackInfo<v8::Value>& info) { | 5 static void {{method.name}}{{method.overload_index}}Method{{world_suffix}}(const
v8::FunctionCallbackInfo<v8::Value>& info) { |
6 {% filter format_remove_duplicates([ | 6 {% filter format_remove_duplicates([ |
7 'ExceptionState exceptionState', | 7 'ExceptionState exceptionState', |
8 'ScriptState* scriptState = ']) %} | 8 'ScriptState* scriptState = ']) %} |
9 {% set define_exception_state -%} | 9 {% set define_exception_state -%} |
10 ExceptionState exceptionState(info.GetIsolate(), ExceptionState::kExecutionCon
text, "{{interface_name}}", "{{method.name}}"); | 10 ExceptionState exceptionState(info.GetIsolate(), ExceptionState::kExecutionCon
text, "{{interface_name}}", "{{method.name}}"); |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 if (UNLIKELY(numArgsPassed <= {{argument.index}})) { | 130 if (UNLIKELY(numArgsPassed <= {{argument.index}})) { |
131 {% if world_suffix %} | 131 {% if world_suffix %} |
132 {{cpp_method_call(method, argument.v8_set_return_value_for_main_world, argumen
t.cpp_value) | indent(2)}} | 132 {{cpp_method_call(method, argument.v8_set_return_value_for_main_world, argumen
t.cpp_value) | indent(2)}} |
133 {% else %} | 133 {% else %} |
134 {{cpp_method_call(method, argument.v8_set_return_value, argument.cpp_value) |
indent(2)}} | 134 {{cpp_method_call(method, argument.v8_set_return_value, argument.cpp_value) |
indent(2)}} |
135 {% endif %} | 135 {% endif %} |
136 return; | 136 return; |
137 } | 137 } |
138 {% endif %} | 138 {% endif %} |
139 {% if argument.is_callback_interface %} | 139 {% if argument.is_callback_interface %} |
140 {# FIXME: remove EventListener special case #} | 140 {# FIXME: remove EventListener/NodeFilter special case. crbug.com/630986 #} |
141 {% if argument.idl_type == 'EventListener' %} | 141 {% if argument.idl_type == 'EventListener' %} |
142 {% if method.name == 'RemoveEventListener' or method.name == 'RemoveListener' %} | 142 {% if method.name == 'RemoveEventListener' or method.name == 'RemoveListener' %} |
143 {{argument.name}} = V8EventListenerHelper::GetEventListener(ScriptState::Current
(info.GetIsolate()), info[{{argument.index}}], false, kListenerFindOnly); | 143 {{argument.name}} = V8EventListenerHelper::GetEventListener(ScriptState::Current
(info.GetIsolate()), info[{{argument.index}}], false, kListenerFindOnly); |
144 {% else %}{# method.name == 'AddEventListener' #} | 144 {% else %}{# method.name == 'AddEventListener' #} |
145 {{argument.name}} = V8EventListenerHelper::GetEventListener(ScriptState::Current
(info.GetIsolate()), info[{{argument.index}}], false, kListenerFindOrCreate); | 145 {{argument.name}} = V8EventListenerHelper::GetEventListener(ScriptState::Current
(info.GetIsolate()), info[{{argument.index}}], false, kListenerFindOrCreate); |
146 {% endif %}{# method.name #} | 146 {% endif %}{# method.name #} |
147 {% else %}{# argument.idl_type == 'EventListener' #} | 147 {% elif argument.idl_type == 'NodeFilter' %} |
| 148 {{argument.name}} = V8NodeFilterCondition::CreateOrNull(info[{{argument.index}}]
, ScriptState::Current(info.GetIsolate())); |
| 149 {% else %}{# argument.idl_type == 'EventListener'/'NodeFilter #} |
148 {# Callback functions must be functions: | 150 {# Callback functions must be functions: |
149 http://www.w3.org/TR/WebIDL/#es-callback-function #} | 151 http://www.w3.org/TR/WebIDL/#es-callback-function #} |
150 {% if argument.is_optional %} | 152 {% if argument.is_optional %} |
151 if (!IsUndefinedOrNull(info[{{argument.index}}])) { | 153 if (!IsUndefinedOrNull(info[{{argument.index}}])) { |
152 if (!info[{{argument.index}}]->IsFunction()) { | 154 if (!info[{{argument.index}}]->IsFunction()) { |
153 {{throw_argument_error(method, argument, "The callback provided as parameter
%(index)d is not a function.")}} | 155 {{throw_argument_error(method, argument, "The callback provided as parameter
%(index)d is not a function.")}} |
154 return; | 156 return; |
155 } | 157 } |
156 {{argument.name}} = V8{{argument.idl_type}}::Create(v8::Local<v8::Function>::C
ast(info[{{argument.index}}]), ScriptState::Current(info.GetIsolate())); | 158 {{argument.name}} = V8{{argument.idl_type}}::Create(v8::Local<v8::Function>::C
ast(info[{{argument.index}}]), ScriptState::Current(info.GetIsolate())); |
157 } else { | 159 } else { |
158 {{argument.name}} = nullptr; | 160 {{argument.name}} = nullptr; |
159 } | 161 } |
160 {% else %}{# argument.is_optional #} | 162 {% else %}{# argument.is_optional #} |
161 if (info.Length() <= {{argument.index}} || !{% if argument.is_nullable %}(info[{
{argument.index}}]->IsFunction() || info[{{argument.index}}]->IsNull()){% else %
}info[{{argument.index}}]->IsFunction(){% endif %}) { | 163 if (info.Length() <= {{argument.index}} || !{% if argument.is_nullable %}(info[{
{argument.index}}]->IsFunction() || info[{{argument.index}}]->IsNull()){% else %
}info[{{argument.index}}]->IsFunction(){% endif %}) { |
162 {{throw_argument_error(method, argument, "The callback provided as parameter %
(index)d is not a function.")}} | 164 {{throw_argument_error(method, argument, "The callback provided as parameter %
(index)d is not a function.")}} |
163 return; | 165 return; |
164 } | 166 } |
165 {{argument.name}} = {% if argument.is_nullable %}info[{{argument.index}}]->IsNul
l() ? nullptr : {% endif %}V8{{argument.idl_type}}::Create(v8::Local<v8::Functio
n>::Cast(info[{{argument.index}}]), ScriptState::Current(info.GetIsolate())); | 167 {{argument.name}} = {% if argument.is_nullable %}info[{{argument.index}}]->IsNul
l() ? nullptr : {% endif %}V8{{argument.idl_type}}::Create(v8::Local<v8::Functio
n>::Cast(info[{{argument.index}}]), ScriptState::Current(info.GetIsolate())); |
166 {% endif %}{# argument.is_optional #} | 168 {% endif %}{# argument.is_optional #} |
167 {% endif %}{# argument.idl_type == 'EventListener' #} | 169 {% endif %}{# argument.idl_type == 'EventListener'/'NodeFilter' #} |
168 {% elif argument.is_callback_function %} | 170 {% elif argument.is_callback_function %} |
169 if ({% if argument.is_nullable %}!IsUndefinedOrNull(info[{{argument.index}}]) &&
{% endif %}!(info[{{argument.index}}]->IsObject() && v8::Local<v8::Object>::Cas
t(info[{{argument.index}}])->IsCallable())) { | 171 if ({% if argument.is_nullable %}!IsUndefinedOrNull(info[{{argument.index}}]) &&
{% endif %}!(info[{{argument.index}}]->IsObject() && v8::Local<v8::Object>::Cas
t(info[{{argument.index}}])->IsCallable())) { |
170 {{throw_argument_error(method, argument, "The callback provided as parameter %
(index)d is not a function.")}} | 172 {{throw_argument_error(method, argument, "The callback provided as parameter %
(index)d is not a function.")}} |
171 return; | 173 return; |
172 } | 174 } |
173 {{v8_value_to_local_cpp_value(argument)}} | 175 {{v8_value_to_local_cpp_value(argument)}} |
174 {% elif argument.is_variadic_wrapper_type %} | 176 {% elif argument.is_variadic_wrapper_type %} |
175 for (int i = {{argument.index}}; i < info.Length(); ++i) { | 177 for (int i = {{argument.index}}; i < info.Length(); ++i) { |
176 if (!V8{{argument.idl_type}}::hasInstance(info[i], info.GetIsolate())) { | 178 if (!V8{{argument.idl_type}}::hasInstance(info[i], info.GetIsolate())) { |
177 {{throw_argument_error(method, argument, "parameter %(index)d is not of type
'%(type)s'.")}} | 179 {{throw_argument_error(method, argument, "parameter %(index)d is not of type
'%(type)s'.")}} |
(...skipping 472 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
650 {{method_configuration(method) | indent(2)}} | 652 {{method_configuration(method) | indent(2)}} |
651 }; | 653 }; |
652 for (const auto& methodConfig : {{method.name}}MethodConfiguration) | 654 for (const auto& methodConfig : {{method.name}}MethodConfiguration) |
653 V8DOMConfiguration::InstallMethod(isolate, world, v8::Local<v8::Object>(), pro
totypeObject, interfaceObject, signature, methodConfig); | 655 V8DOMConfiguration::InstallMethod(isolate, world, v8::Local<v8::Object>(), pro
totypeObject, interfaceObject, signature, methodConfig); |
654 {% endfilter %}{# runtime_enabled() #} | 656 {% endfilter %}{# runtime_enabled() #} |
655 {% endfilter %}{# exposed() #} | 657 {% endfilter %}{# exposed() #} |
656 {% endfilter %}{# secure_context() #} | 658 {% endfilter %}{# secure_context() #} |
657 {% endfor %} | 659 {% endfor %} |
658 {% endif %} | 660 {% endif %} |
659 {%- endmacro %} | 661 {%- endmacro %} |
OLD | NEW |