OLD | NEW |
1 {% from 'conversions.cpp' import declare_enum_validation_variable, v8_value_to_l
ocal_cpp_value %} | 1 {% from 'conversions.cpp' import declare_enum_validation_variable, v8_value_to_l
ocal_cpp_value %} |
2 | 2 |
3 | 3 |
4 {##############################################################################} | 4 {##############################################################################} |
5 {% macro generate_method(method, world_suffix) %} | 5 {% macro generate_method(method, world_suffix) %} |
6 {% filter conditional(method.conditional_string) %} | 6 {% filter conditional(method.conditional_string) %} |
7 {% if method.returns_promise and method.has_exception_state %} | 7 {% if method.returns_promise and method.has_exception_state %} |
8 static void {{method.name}}{{method.overload_index}}Method{{world_suffix}}Promis
e(const v8::FunctionCallbackInfo<v8::Value>& info, ExceptionState& exceptionStat
e) | 8 static void {{method.name}}{{method.overload_index}}Method{{world_suffix}}Promis
e(const v8::FunctionCallbackInfo<v8::Value>& info, ExceptionState& exceptionStat
e) |
9 {% else %} | 9 {% else %} |
10 static void {{method.name}}{{method.overload_index}}Method{{world_suffix}}(const
v8::FunctionCallbackInfo<v8::Value>& info) | 10 static void {{method.name}}{{method.overload_index}}Method{{world_suffix}}(const
v8::FunctionCallbackInfo<v8::Value>& info) |
(...skipping 10 matching lines...) Expand all Loading... |
21 } | 21 } |
22 {% endif %} | 22 {% endif %} |
23 {% if not method.is_static %} | 23 {% if not method.is_static %} |
24 {{cpp_class}}* impl = {{v8_class}}::toImpl(info.Holder()); | 24 {{cpp_class}}* impl = {{v8_class}}::toImpl(info.Holder()); |
25 {% endif %} | 25 {% endif %} |
26 {% if method.is_custom_element_callbacks %} | 26 {% if method.is_custom_element_callbacks %} |
27 CustomElementProcessingStack::CallbackDeliveryScope deliveryScope; | 27 CustomElementProcessingStack::CallbackDeliveryScope deliveryScope; |
28 {% endif %} | 28 {% endif %} |
29 {# Security checks #} | 29 {# Security checks #} |
30 {% if method.is_check_security_for_receiver %} | 30 {% if method.is_check_security_for_receiver %} |
| 31 {% if interface_name == 'EventTarget' %} |
| 32 // Performance hack for EventTarget. Checking whether it's a Window or not |
| 33 // prior to the call to BindingSecurity::shouldAllowAccessTo increases 30% |
| 34 // of speed performance on Android Nexus 7 as of Dec 2016. ALWAYS_INLINE |
| 35 // didn't work in this case. |
| 36 if (LocalDOMWindow* window = impl->toDOMWindow()) { |
| 37 if (!BindingSecurity::shouldAllowAccessTo(info.GetIsolate(), callingDOMW
indow(info.GetIsolate()), window, exceptionState)) { |
| 38 {% if not method.returns_promise %} |
| 39 exceptionState.throwIfNeeded(); |
| 40 {% endif %} |
| 41 return; |
| 42 } |
| 43 } |
| 44 {% else %}{# interface_name == 'EventTarget' #} |
31 if (!BindingSecurity::shouldAllowAccessTo(info.GetIsolate(), callingDOMWindo
w(info.GetIsolate()), impl, exceptionState)) { | 45 if (!BindingSecurity::shouldAllowAccessTo(info.GetIsolate(), callingDOMWindo
w(info.GetIsolate()), impl, exceptionState)) { |
32 {% if not method.returns_promise %} | 46 {% if not method.returns_promise %} |
33 exceptionState.throwIfNeeded(); | 47 exceptionState.throwIfNeeded(); |
34 {% endif %} | 48 {% endif %} |
35 return; | 49 return; |
36 } | 50 } |
| 51 {% endif %}{# interface_name == 'EventTarget' #} |
37 {% endif %} | 52 {% endif %} |
38 {% if method.is_check_security_for_return_value %} | 53 {% if method.is_check_security_for_return_value %} |
39 if (!BindingSecurity::shouldAllowAccessTo(info.GetIsolate(), callingDOMWindo
w(info.GetIsolate()), {{method.cpp_value}}, exceptionState)) { | 54 if (!BindingSecurity::shouldAllowAccessTo(info.GetIsolate(), callingDOMWindo
w(info.GetIsolate()), {{method.cpp_value}}, exceptionState)) { |
40 v8SetReturnValueNull(info); | 55 v8SetReturnValueNull(info); |
41 {% if not method.returns_promise %} | 56 {% if not method.returns_promise %} |
42 exceptionState.throwIfNeeded(); | 57 exceptionState.throwIfNeeded(); |
43 {% endif %} | 58 {% endif %} |
44 return; | 59 return; |
45 } | 60 } |
46 {% endif %} | 61 {% endif %} |
(...skipping 645 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
692 {% filter runtime_enabled(method.overloads.runtime_enabled_function_all | 707 {% filter runtime_enabled(method.overloads.runtime_enabled_function_all |
693 if method.overloads else | 708 if method.overloads else |
694 method.runtime_enabled_function) %} | 709 method.runtime_enabled_function) %} |
695 const V8DOMConfiguration::MethodConfiguration {{method.name}}MethodConfiguration
= {{method_configuration(method)}}; | 710 const V8DOMConfiguration::MethodConfiguration {{method.name}}MethodConfiguration
= {{method_configuration(method)}}; |
696 V8DOMConfiguration::installMethod(isolate, v8::Local<v8::Object>(), prototypeObj
ect, interfaceObject, defaultSignature, {{method.name}}MethodConfiguration); | 711 V8DOMConfiguration::installMethod(isolate, v8::Local<v8::Object>(), prototypeObj
ect, interfaceObject, defaultSignature, {{method.name}}MethodConfiguration); |
697 {% endfilter %}{# runtime_enabled() #} | 712 {% endfilter %}{# runtime_enabled() #} |
698 {% endfilter %}{# exposed() #} | 713 {% endfilter %}{# exposed() #} |
699 {% endfor %} | 714 {% endfor %} |
700 {% endif %} | 715 {% endif %} |
701 {%- endmacro %} | 716 {%- endmacro %} |
OLD | NEW |