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::ExecutionCont
ext, "{{interface_name}}", "{{method.name}}"); | 10 ExceptionState exceptionState(info.GetIsolate(), ExceptionState::ExecutionCont
ext, "{{interface_name}}", "{{method.name}}"); |
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
503 {% elif method.is_post_message %} | 503 {% elif method.is_post_message %} |
504 postMessageImpl("{{interface_name}}", {{v8_class}}::toImpl(info.Holder()), inf
o); | 504 postMessageImpl("{{interface_name}}", {{v8_class}}::toImpl(info.Holder()), inf
o); |
505 {% else %} | 505 {% else %} |
506 {{cpp_class_or_partial}}V8Internal::{{method.name}}Method{{world_suffix}}(info
); | 506 {{cpp_class_or_partial}}V8Internal::{{method.name}}Method{{world_suffix}}(info
); |
507 {% endif %} | 507 {% endif %} |
508 } | 508 } |
509 {% endmacro %} | 509 {% endmacro %} |
510 | 510 |
511 | 511 |
512 {##############################################################################} | 512 {##############################################################################} |
513 {% macro origin_safe_method_getter(method, world_suffix) %} | 513 {% macro cross_origin_method_getter(method, world_suffix) %} |
514 static void {{method.name}}OriginSafeMethodGetter{{world_suffix}}(const v8::Prop
ertyCallbackInfo<v8::Value>& info) { | 514 static void {{method.name}}CrossOriginMethodGetter{{world_suffix}}(const v8::Pro
pertyCallbackInfo<v8::Value>& info) { |
515 static int domTemplateKey; // This address is used for a key to look up the do
m template. | 515 static int domTemplateKey; // This address is used for a key to look up the do
m template. |
516 V8PerIsolateData* data = V8PerIsolateData::from(info.GetIsolate()); | 516 V8PerIsolateData* data = V8PerIsolateData::from(info.GetIsolate()); |
517 const DOMWrapperWorld& world = DOMWrapperWorld::world(info.GetIsolate()->GetCu
rrentContext()); | 517 const DOMWrapperWorld& world = DOMWrapperWorld::world(info.GetIsolate()->GetCu
rrentContext()); |
518 v8::Local<v8::FunctionTemplate> interfaceTemplate = data->findInterfaceTemplat
e(world, &{{v8_class}}::wrapperTypeInfo); | 518 v8::Local<v8::FunctionTemplate> interfaceTemplate = data->findInterfaceTemplat
e(world, &{{v8_class}}::wrapperTypeInfo); |
519 v8::Local<v8::Signature> signature = v8::Signature::New(info.GetIsolate(), int
erfaceTemplate); | 519 v8::Local<v8::Signature> signature = v8::Signature::New(info.GetIsolate(), int
erfaceTemplate); |
520 | 520 |
521 v8::Local<v8::FunctionTemplate> methodTemplate = data->findOrCreateOperationTe
mplate(world, &domTemplateKey, {{cpp_class}}V8Internal::{{method.name}}MethodCal
lback{{world_suffix}}, v8Undefined(), signature, {{method.length}}); | 521 v8::Local<v8::FunctionTemplate> methodTemplate = data->findOrCreateOperationTe
mplate(world, &domTemplateKey, {{cpp_class}}V8Internal::{{method.name}}MethodCal
lback{{world_suffix}}, v8Undefined(), signature, {{method.length}}); |
522 // Return the function by default, unless the user script has overwritten it. | |
523 v8SetReturnValue(info, methodTemplate->GetFunction(info.GetIsolate()->GetCurre
ntContext()).ToLocalChecked()); | 522 v8SetReturnValue(info, methodTemplate->GetFunction(info.GetIsolate()->GetCurre
ntContext()).ToLocalChecked()); |
524 | |
525 {{cpp_class}}* impl = {{v8_class}}::toImpl(info.Holder()); | |
526 if (!BindingSecurity::shouldAllowAccessTo(currentDOMWindow(info.GetIsolate()),
impl, BindingSecurity::ErrorReportOption::DoNotReport)) { | |
527 return; | |
528 } | |
529 | |
530 v8::Local<v8::Value> hiddenValue = V8HiddenValue::getHiddenValue(ScriptState::
current(info.GetIsolate()), v8::Local<v8::Object>::Cast(info.Holder()), v8Atomic
String(info.GetIsolate(), "{{method.name}}")); | |
531 if (!hiddenValue.IsEmpty()) { | |
532 v8SetReturnValue(info, hiddenValue); | |
533 } | |
534 } | |
535 | |
536 void {{method.name}}OriginSafeMethodGetterCallback{{world_suffix}}(v8::Local<v8:
:Name>, const v8::PropertyCallbackInfo<v8::Value>& info) { | |
537 {{cpp_class}}V8Internal::{{method.name}}OriginSafeMethodGetter{{world_suffix}}
(info); | |
538 } | 523 } |
539 {% endmacro %} | 524 {% endmacro %} |
540 | 525 |
541 | 526 |
542 {##############################################################################} | 527 {##############################################################################} |
543 {% macro method_implemented_in_private_script(method) %} | 528 {% macro method_implemented_in_private_script(method) %} |
544 bool {{v8_class}}::PrivateScript::{{method.name}}Method({{method.argument_declar
ations_for_private_script | join(', ')}}) { | 529 bool {{v8_class}}::PrivateScript::{{method.name}}Method({{method.argument_declar
ations_for_private_script | join(', ')}}) { |
545 if (!frame) | 530 if (!frame) |
546 return false; | 531 return false; |
547 v8::HandleScope handleScope(toIsolate(frame)); | 532 v8::HandleScope handleScope(toIsolate(frame)); |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
662 if method.overloads else | 647 if method.overloads else |
663 method.runtime_enabled_function) %} | 648 method.runtime_enabled_function) %} |
664 const V8DOMConfiguration::MethodConfiguration {{method.name}}MethodConfiguration
= {{method_configuration(method)}}; | 649 const V8DOMConfiguration::MethodConfiguration {{method.name}}MethodConfiguration
= {{method_configuration(method)}}; |
665 V8DOMConfiguration::installMethod(isolate, world, v8::Local<v8::Object>(), proto
typeObject, interfaceObject, signature, {{method.name}}MethodConfiguration); | 650 V8DOMConfiguration::installMethod(isolate, world, v8::Local<v8::Object>(), proto
typeObject, interfaceObject, signature, {{method.name}}MethodConfiguration); |
666 {% endfilter %}{# runtime_enabled() #} | 651 {% endfilter %}{# runtime_enabled() #} |
667 {% endfilter %}{# exposed() #} | 652 {% endfilter %}{# exposed() #} |
668 {% endfilter %}{# secure_context() #} | 653 {% endfilter %}{# secure_context() #} |
669 {% endfor %} | 654 {% endfor %} |
670 {% endif %} | 655 {% endif %} |
671 {%- endmacro %} | 656 {%- endmacro %} |
OLD | NEW |