OLD | NEW |
1 {% extends 'interface_base.cpp' %} | 1 {% extends 'interface_base.cpp' %} |
2 | 2 |
3 | 3 |
4 {##############################################################################} | 4 {##############################################################################} |
5 {% macro attribute_configuration(attribute) %} | 5 {% macro attribute_configuration(attribute) %} |
6 {% set getter_callback = | 6 {% set getter_callback = |
7 '%sV8Internal::%sAttributeGetterCallback' % | 7 '%sV8Internal::%sAttributeGetterCallback' % |
8 (cpp_class, attribute.name) | 8 (cpp_class, attribute.name) |
9 if not attribute.constructor_type else | 9 if not attribute.constructor_type else |
10 ('%sV8Internal::%sConstructorGetterCallback' % | 10 ('%sV8Internal::%sConstructorGetterCallback' % |
(...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
554 {% from 'methods.cpp' import named_constructor_callback with context %} | 554 {% from 'methods.cpp' import named_constructor_callback with context %} |
555 {% block named_constructor %} | 555 {% block named_constructor %} |
556 {% if named_constructor %} | 556 {% if named_constructor %} |
557 {% set to_active_dom_object = '%s::toActiveDOMObject' % v8_class | 557 {% set to_active_dom_object = '%s::toActiveDOMObject' % v8_class |
558 if is_active_dom_object else '0' %} | 558 if is_active_dom_object else '0' %} |
559 {% set to_event_target = '%s::toEventTarget' % v8_class | 559 {% set to_event_target = '%s::toEventTarget' % v8_class |
560 if is_event_target else '0' %} | 560 if is_event_target else '0' %} |
561 const WrapperTypeInfo {{v8_class}}Constructor::wrapperTypeInfo = { gin::kEmbedde
rBlink, {{v8_class}}Constructor::domTemplate, {{v8_class}}::derefObject, {{to_ac
tive_dom_object}}, {{to_event_target}}, 0, {{v8_class}}::installPerContextEnable
dMethods, 0, WrapperTypeObjectPrototype, false }; | 561 const WrapperTypeInfo {{v8_class}}Constructor::wrapperTypeInfo = { gin::kEmbedde
rBlink, {{v8_class}}Constructor::domTemplate, {{v8_class}}::derefObject, {{to_ac
tive_dom_object}}, {{to_event_target}}, 0, {{v8_class}}::installPerContextEnable
dMethods, 0, WrapperTypeObjectPrototype, false }; |
562 | 562 |
563 {{named_constructor_callback(named_constructor)}} | 563 {{named_constructor_callback(named_constructor)}} |
564 v8::Handle<v8::FunctionTemplate> {{v8_class}}Constructor::domTemplate(v8::Isolat
e* isolate, WrapperWorldType currentWorldType) | 564 v8::Handle<v8::FunctionTemplate> {{v8_class}}Constructor::domTemplate(v8::Isolat
e* isolate) |
565 { | 565 { |
566 static int domTemplateKey; // This address is used for a key to look up the
dom template. | 566 static int domTemplateKey; // This address is used for a key to look up the
dom template. |
567 V8PerIsolateData* data = V8PerIsolateData::from(isolate); | 567 V8PerIsolateData* data = V8PerIsolateData::from(isolate); |
568 v8::Local<v8::FunctionTemplate> result = data->existingDOMTemplate(currentWo
rldType, &domTemplateKey); | 568 v8::Local<v8::FunctionTemplate> result = data->existingDOMTemplate(&domTempl
ateKey); |
569 if (!result.IsEmpty()) | 569 if (!result.IsEmpty()) |
570 return result; | 570 return result; |
571 | 571 |
572 TRACE_EVENT_SCOPED_SAMPLING_STATE("Blink", "BuildDOMTemplate"); | 572 TRACE_EVENT_SCOPED_SAMPLING_STATE("Blink", "BuildDOMTemplate"); |
573 v8::EscapableHandleScope scope(isolate); | 573 v8::EscapableHandleScope scope(isolate); |
574 result = v8::FunctionTemplate::New(isolate, {{v8_class}}ConstructorCallback)
; | 574 result = v8::FunctionTemplate::New(isolate, {{v8_class}}ConstructorCallback)
; |
575 | 575 |
576 v8::Local<v8::ObjectTemplate> instanceTemplate = result->InstanceTemplate(); | 576 v8::Local<v8::ObjectTemplate> instanceTemplate = result->InstanceTemplate(); |
577 instanceTemplate->SetInternalFieldCount({{v8_class}}::internalFieldCount); | 577 instanceTemplate->SetInternalFieldCount({{v8_class}}::internalFieldCount); |
578 result->SetClassName(v8AtomicString(isolate, "{{cpp_class}}")); | 578 result->SetClassName(v8AtomicString(isolate, "{{cpp_class}}")); |
579 result->Inherit({{v8_class}}::domTemplate(isolate, currentWorldType)); | 579 result->Inherit({{v8_class}}::domTemplate(isolate)); |
580 data->setDOMTemplate(currentWorldType, &domTemplateKey, result); | 580 data->setDOMTemplate(&domTemplateKey, result); |
581 | |
582 return scope.Escape(result); | 581 return scope.Escape(result); |
583 } | 582 } |
584 | 583 |
585 {% endif %} | 584 {% endif %} |
586 {% endblock %} | 585 {% endblock %} |
587 | 586 |
588 {##############################################################################} | 587 {##############################################################################} |
589 {% block overloaded_constructor %} | 588 {% block overloaded_constructor %} |
590 {% if constructors|length > 1 %} | 589 {% if constructors|length > 1 %} |
591 static void constructor(const v8::FunctionCallbackInfo<v8::Value>& info) | 590 static void constructor(const v8::FunctionCallbackInfo<v8::Value>& info) |
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
836 {% endif %} | 835 {% endif %} |
837 } | 836 } |
838 | 837 |
839 {% endif %} | 838 {% endif %} |
840 {% endblock %} | 839 {% endblock %} |
841 | 840 |
842 | 841 |
843 {##############################################################################} | 842 {##############################################################################} |
844 {% block configure_shadow_object_template %} | 843 {% block configure_shadow_object_template %} |
845 {% if interface_name == 'Window' %} | 844 {% if interface_name == 'Window' %} |
846 static void configureShadowObjectTemplate(v8::Handle<v8::ObjectTemplate> templ,
v8::Isolate* isolate, WrapperWorldType currentWorldType) | 845 static void configureShadowObjectTemplate(v8::Handle<v8::ObjectTemplate> templ,
v8::Isolate* isolate) |
847 { | 846 { |
848 V8DOMConfiguration::installAttributes(templ, v8::Handle<v8::ObjectTemplate>(
), shadowAttributes, WTF_ARRAY_LENGTH(shadowAttributes), isolate, currentWorldTy
pe); | 847 V8DOMConfiguration::installAttributes(templ, v8::Handle<v8::ObjectTemplate>(
), shadowAttributes, WTF_ARRAY_LENGTH(shadowAttributes), isolate); |
849 | 848 |
850 // Install a security handler with V8. | 849 // Install a security handler with V8. |
851 templ->SetAccessCheckCallbacks(V8Window::namedSecurityCheckCustom, V8Window:
:indexedSecurityCheckCustom, v8::External::New(isolate, const_cast<WrapperTypeIn
fo*>(&V8Window::wrapperTypeInfo))); | 850 templ->SetAccessCheckCallbacks(V8Window::namedSecurityCheckCustom, V8Window:
:indexedSecurityCheckCustom, v8::External::New(isolate, const_cast<WrapperTypeIn
fo*>(&V8Window::wrapperTypeInfo))); |
852 templ->SetInternalFieldCount(V8Window::internalFieldCount); | 851 templ->SetInternalFieldCount(V8Window::internalFieldCount); |
853 } | 852 } |
854 | 853 |
855 {% endif %} | 854 {% endif %} |
856 {% endblock %} | 855 {% endblock %} |
857 | 856 |
858 | 857 |
859 {##############################################################################} | 858 {##############################################################################} |
860 {% block configure_class_template %} | 859 {% block configure_class_template %} |
861 {# FIXME: rename to install_dom_template and Install{{v8_class}}DOMTemplate #} | 860 {# FIXME: rename to install_dom_template and Install{{v8_class}}DOMTemplate #} |
862 static void configure{{v8_class}}Template(v8::Handle<v8::FunctionTemplate> funct
ionTemplate, v8::Isolate* isolate, WrapperWorldType currentWorldType) | 861 static void configure{{v8_class}}Template(v8::Handle<v8::FunctionTemplate> funct
ionTemplate, v8::Isolate* isolate) |
863 { | 862 { |
864 functionTemplate->ReadOnlyPrototype(); | 863 functionTemplate->ReadOnlyPrototype(); |
865 | 864 |
866 v8::Local<v8::Signature> defaultSignature; | 865 v8::Local<v8::Signature> defaultSignature; |
867 {% set parent_template = | 866 {% set parent_template = |
868 'V8%s::domTemplate(isolate, currentWorldType)' % parent_interface | 867 'V8%s::domTemplate(isolate)' % parent_interface |
869 if parent_interface else 'v8::Local<v8::FunctionTemplate>()' %} | 868 if parent_interface else 'v8::Local<v8::FunctionTemplate>()' %} |
870 {% if runtime_enabled_function %} | 869 {% if runtime_enabled_function %} |
871 if (!{{runtime_enabled_function}}()) | 870 if (!{{runtime_enabled_function}}()) |
872 defaultSignature = V8DOMConfiguration::installDOMClassTemplate(functionT
emplate, "", {{parent_template}}, {{v8_class}}::internalFieldCount, 0, 0, 0, 0,
0, 0, isolate, currentWorldType); | 871 defaultSignature = V8DOMConfiguration::installDOMClassTemplate(functionT
emplate, "", {{parent_template}}, {{v8_class}}::internalFieldCount, 0, 0, 0, 0,
0, 0, isolate); |
873 else | 872 else |
874 {% endif %} | 873 {% endif %} |
875 {% set runtime_enabled_indent = 4 if runtime_enabled_function else 0 %} | 874 {% set runtime_enabled_indent = 4 if runtime_enabled_function else 0 %} |
876 {% filter indent(runtime_enabled_indent, true) %} | 875 {% filter indent(runtime_enabled_indent, true) %} |
877 defaultSignature = V8DOMConfiguration::installDOMClassTemplate(functionTempl
ate, "{{interface_name}}", {{parent_template}}, {{v8_class}}::internalFieldCount
, | 876 defaultSignature = V8DOMConfiguration::installDOMClassTemplate(functionTempl
ate, "{{interface_name}}", {{parent_template}}, {{v8_class}}::internalFieldCount
, |
878 {# Test needed as size 0 constant arrays are not allowed in VC++ #} | 877 {# Test needed as size 0 constant arrays are not allowed in VC++ #} |
879 {% set attributes_name, attributes_length = | 878 {% set attributes_name, attributes_length = |
880 ('%sAttributes' % v8_class, | 879 ('%sAttributes' % v8_class, |
881 'WTF_ARRAY_LENGTH(%sAttributes)' % v8_class) | 880 'WTF_ARRAY_LENGTH(%sAttributes)' % v8_class) |
882 if has_attribute_configuration else (0, 0) %} | 881 if has_attribute_configuration else (0, 0) %} |
883 {% set accessors_name, accessors_length = | 882 {% set accessors_name, accessors_length = |
884 ('%sAccessors' % v8_class, | 883 ('%sAccessors' % v8_class, |
885 'WTF_ARRAY_LENGTH(%sAccessors)' % v8_class) | 884 'WTF_ARRAY_LENGTH(%sAccessors)' % v8_class) |
886 if has_accessors else (0, 0) %} | 885 if has_accessors else (0, 0) %} |
887 {% set methods_name, methods_length = | 886 {% set methods_name, methods_length = |
888 ('%sMethods' % v8_class, | 887 ('%sMethods' % v8_class, |
889 'WTF_ARRAY_LENGTH(%sMethods)' % v8_class) | 888 'WTF_ARRAY_LENGTH(%sMethods)' % v8_class) |
890 if has_method_configuration else (0, 0) %} | 889 if has_method_configuration else (0, 0) %} |
891 {{attributes_name}}, {{attributes_length}}, | 890 {{attributes_name}}, {{attributes_length}}, |
892 {{accessors_name}}, {{accessors_length}}, | 891 {{accessors_name}}, {{accessors_length}}, |
893 {{methods_name}}, {{methods_length}}, | 892 {{methods_name}}, {{methods_length}}, |
894 isolate, currentWorldType); | 893 isolate); |
895 {% endfilter %} | 894 {% endfilter %} |
896 | 895 |
897 {% if constructors or has_custom_constructor or has_event_constructor %} | 896 {% if constructors or has_custom_constructor or has_event_constructor %} |
898 functionTemplate->SetCallHandler({{v8_class}}::constructorCallback); | 897 functionTemplate->SetCallHandler({{v8_class}}::constructorCallback); |
899 functionTemplate->SetLength({{interface_length}}); | 898 functionTemplate->SetLength({{interface_length}}); |
900 {% endif %} | 899 {% endif %} |
901 v8::Local<v8::ObjectTemplate> ALLOW_UNUSED instanceTemplate = functionTempla
te->InstanceTemplate(); | 900 v8::Local<v8::ObjectTemplate> ALLOW_UNUSED instanceTemplate = functionTempla
te->InstanceTemplate(); |
902 v8::Local<v8::ObjectTemplate> ALLOW_UNUSED prototypeTemplate = functionTempl
ate->PrototypeTemplate(); | 901 v8::Local<v8::ObjectTemplate> ALLOW_UNUSED prototypeTemplate = functionTempl
ate->PrototypeTemplate(); |
903 {% if is_check_security and interface_name != 'Window' %} | 902 {% if is_check_security and interface_name != 'Window' %} |
904 instanceTemplate->SetAccessCheckCallbacks({{cpp_class}}V8Internal::namedSecu
rityCheck, {{cpp_class}}V8Internal::indexedSecurityCheck, v8::External::New(isol
ate, const_cast<WrapperTypeInfo*>(&{{v8_class}}::wrapperTypeInfo))); | 903 instanceTemplate->SetAccessCheckCallbacks({{cpp_class}}V8Internal::namedSecu
rityCheck, {{cpp_class}}V8Internal::indexedSecurityCheck, v8::External::New(isol
ate, const_cast<WrapperTypeInfo*>(&{{v8_class}}::wrapperTypeInfo))); |
905 {% endif %} | 904 {% endif %} |
906 {% for attribute in attributes | 905 {% for attribute in attributes |
907 if attribute.runtime_enabled_function and | 906 if attribute.runtime_enabled_function and |
908 not attribute.per_context_enabled_function and | 907 not attribute.per_context_enabled_function and |
909 not attribute.is_static %} | 908 not attribute.is_static %} |
910 {% filter conditional(attribute.conditional_string) %} | 909 {% filter conditional(attribute.conditional_string) %} |
911 if ({{attribute.runtime_enabled_function}}()) { | 910 if ({{attribute.runtime_enabled_function}}()) { |
912 static const V8DOMConfiguration::AttributeConfiguration attributeConfigu
ration =\ | 911 static const V8DOMConfiguration::AttributeConfiguration attributeConfigu
ration =\ |
913 {{attribute_configuration(attribute)}}; | 912 {{attribute_configuration(attribute)}}; |
914 V8DOMConfiguration::installAttribute(instanceTemplate, prototypeTemplate
, attributeConfiguration, isolate, currentWorldType); | 913 V8DOMConfiguration::installAttribute(instanceTemplate, prototypeTemplate
, attributeConfiguration, isolate); |
915 } | 914 } |
916 {% endfilter %} | 915 {% endfilter %} |
917 {% endfor %} | 916 {% endfor %} |
918 {% if constants %} | 917 {% if constants %} |
919 {{install_constants() | indent}} | 918 {{install_constants() | indent}} |
920 {% endif %} | 919 {% endif %} |
921 {# Special operations #} | 920 {# Special operations #} |
922 {# V8 has access-check callback API and it's used on Window instead of | 921 {# V8 has access-check callback API and it's used on Window instead of |
923 deleters or enumerators; see ObjectTemplate::SetAccessCheckCallbacks. | 922 deleters or enumerators; see ObjectTemplate::SetAccessCheckCallbacks. |
924 In addition, the getter should be set on the prototype template, to get | 923 In addition, the getter should be set on the prototype template, to get |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
968 {# Needed for legacy support of document.all #} | 967 {# Needed for legacy support of document.all #} |
969 functionTemplate->InstanceTemplate()->MarkAsUndetectable(); | 968 functionTemplate->InstanceTemplate()->MarkAsUndetectable(); |
970 {% endif %} | 969 {% endif %} |
971 {% for method in methods if not method.do_not_check_signature %} | 970 {% for method in methods if not method.do_not_check_signature %} |
972 {# install_custom_signature #} | 971 {# install_custom_signature #} |
973 {% if not method.overload_index or method.overload_index == 1 %} | 972 {% if not method.overload_index or method.overload_index == 1 %} |
974 {# For overloaded methods, only generate one accessor #} | 973 {# For overloaded methods, only generate one accessor #} |
975 {% filter conditional(method.conditional_string) %} | 974 {% filter conditional(method.conditional_string) %} |
976 {% if method.is_do_not_check_security %} | 975 {% if method.is_do_not_check_security %} |
977 {% if method.is_per_world_bindings %} | 976 {% if method.is_per_world_bindings %} |
978 if (currentWorldType == MainWorld) { | 977 if (DOMWrapperWorld::current(isolate)->isMainWorld()) { |
979 {{install_do_not_check_security_signature(method, 'ForMainWorld')}} | 978 {{install_do_not_check_security_signature(method, 'ForMainWorld')}} |
980 } else { | 979 } else { |
981 {{install_do_not_check_security_signature(method)}} | 980 {{install_do_not_check_security_signature(method)}} |
982 } | 981 } |
983 {% else %} | 982 {% else %} |
984 {{install_do_not_check_security_signature(method)}} | 983 {{install_do_not_check_security_signature(method)}} |
985 {% endif %} | 984 {% endif %} |
986 {% else %}{# is_do_not_check_security #} | 985 {% else %}{# is_do_not_check_security #} |
987 {% if method.is_per_world_bindings %} | 986 {% if method.is_per_world_bindings %} |
988 if (currentWorldType == MainWorld) { | 987 if (DOMWrapperWorld::current(isolate)->isMainWorld()) { |
989 {% filter runtime_enabled(method.runtime_enabled_function) %} | 988 {% filter runtime_enabled(method.runtime_enabled_function) %} |
990 {{install_custom_signature(method, 'ForMainWorld')}} | 989 {{install_custom_signature(method, 'ForMainWorld')}} |
991 {% endfilter %} | 990 {% endfilter %} |
992 } else { | 991 } else { |
993 {% filter runtime_enabled(method.runtime_enabled_function) %} | 992 {% filter runtime_enabled(method.runtime_enabled_function) %} |
994 {{install_custom_signature(method)}} | 993 {{install_custom_signature(method)}} |
995 {% endfilter %} | 994 {% endfilter %} |
996 } | 995 } |
997 {% else %} | 996 {% else %} |
998 {% filter runtime_enabled(method.runtime_enabled_function) %} | 997 {% filter runtime_enabled(method.runtime_enabled_function) %} |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1087 {% set constant_cpp_class = constant.cpp_class or cpp_class %} | 1086 {% set constant_cpp_class = constant.cpp_class or cpp_class %} |
1088 COMPILE_ASSERT({{constant.value}} == {{constant_cpp_class}}::{{constant.reflecte
d_name}}, TheValueOf{{cpp_class}}_{{constant.reflected_name}}DoesntMatchWithImpl
ementation); | 1087 COMPILE_ASSERT({{constant.value}} == {{constant_cpp_class}}::{{constant.reflecte
d_name}}, TheValueOf{{cpp_class}}_{{constant.reflected_name}}DoesntMatchWithImpl
ementation); |
1089 {% endfor %} | 1088 {% endfor %} |
1090 {% endif %} | 1089 {% endif %} |
1091 {% endmacro %} | 1090 {% endmacro %} |
1092 | 1091 |
1093 | 1092 |
1094 {##############################################################################} | 1093 {##############################################################################} |
1095 {% block get_template %} | 1094 {% block get_template %} |
1096 {# FIXME: rename to get_dom_template and GetDOMTemplate #} | 1095 {# FIXME: rename to get_dom_template and GetDOMTemplate #} |
1097 v8::Handle<v8::FunctionTemplate> {{v8_class}}::domTemplate(v8::Isolate* isolate,
WrapperWorldType currentWorldType) | 1096 v8::Handle<v8::FunctionTemplate> {{v8_class}}::domTemplate(v8::Isolate* isolate) |
1098 { | 1097 { |
1099 V8PerIsolateData* data = V8PerIsolateData::from(isolate); | 1098 V8PerIsolateData* data = V8PerIsolateData::from(isolate); |
1100 V8PerIsolateData::TemplateMap::iterator result = data->templateMap(currentWo
rldType).find(&wrapperTypeInfo); | 1099 V8PerIsolateData::TemplateMap::iterator result = data->templateMap().find(&w
rapperTypeInfo); |
1101 if (result != data->templateMap(currentWorldType).end()) | 1100 if (result != data->templateMap().end()) |
1102 return result->value.newLocal(isolate); | 1101 return result->value.newLocal(isolate); |
1103 | 1102 |
1104 TRACE_EVENT_SCOPED_SAMPLING_STATE("Blink", "BuildDOMTemplate"); | 1103 TRACE_EVENT_SCOPED_SAMPLING_STATE("Blink", "BuildDOMTemplate"); |
1105 v8::Local<v8::FunctionTemplate> templ = v8::FunctionTemplate::New(isolate, V
8ObjectConstructor::isValidConstructorMode); | 1104 v8::Local<v8::FunctionTemplate> templ = v8::FunctionTemplate::New(isolate, V
8ObjectConstructor::isValidConstructorMode); |
1106 configure{{v8_class}}Template(templ, isolate, currentWorldType); | 1105 configure{{v8_class}}Template(templ, isolate); |
1107 data->templateMap(currentWorldType).add(&wrapperTypeInfo, UnsafePersistent<v
8::FunctionTemplate>(isolate, templ)); | 1106 data->templateMap().add(&wrapperTypeInfo, UnsafePersistent<v8::FunctionTempl
ate>(isolate, templ)); |
1108 return templ; | 1107 return templ; |
1109 } | 1108 } |
1110 | 1109 |
1111 {% endblock %} | 1110 {% endblock %} |
1112 | 1111 |
1113 | 1112 |
1114 {##############################################################################} | 1113 {##############################################################################} |
1115 {% block has_instance %} | 1114 {% block has_instance %} |
1116 bool {{v8_class}}::hasInstance(v8::Handle<v8::Value> jsValue, v8::Isolate* isola
te) | 1115 bool {{v8_class}}::hasInstance(v8::Handle<v8::Value> jsValue, v8::Isolate* isola
te) |
1117 { | 1116 { |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1154 {% endif %} | 1153 {% endif %} |
1155 {% endblock %} | 1154 {% endblock %} |
1156 | 1155 |
1157 | 1156 |
1158 {##############################################################################} | 1157 {##############################################################################} |
1159 {% block install_per_context_methods %} | 1158 {% block install_per_context_methods %} |
1160 {% if has_per_context_enabled_methods %} | 1159 {% if has_per_context_enabled_methods %} |
1161 void {{v8_class}}::installPerContextEnabledMethods(v8::Handle<v8::Object> protot
ypeTemplate, v8::Isolate* isolate) | 1160 void {{v8_class}}::installPerContextEnabledMethods(v8::Handle<v8::Object> protot
ypeTemplate, v8::Isolate* isolate) |
1162 { | 1161 { |
1163 {# Define per-context enabled operations #} | 1162 {# Define per-context enabled operations #} |
1164 v8::Local<v8::Signature> defaultSignature = v8::Signature::New(isolate, domT
emplate(isolate, worldType(isolate))); | 1163 v8::Local<v8::Signature> defaultSignature = v8::Signature::New(isolate, domT
emplate(isolate)); |
1165 | 1164 |
1166 ExecutionContext* context = toExecutionContext(prototypeTemplate->CreationCo
ntext()); | 1165 ExecutionContext* context = toExecutionContext(prototypeTemplate->CreationCo
ntext()); |
1167 {% for method in methods if method.per_context_enabled_function %} | 1166 {% for method in methods if method.per_context_enabled_function %} |
1168 if (context && context->isDocument() && {{method.per_context_enabled_functio
n}}(toDocument(context))) | 1167 if (context && context->isDocument() && {{method.per_context_enabled_functio
n}}(toDocument(context))) |
1169 prototypeTemplate->Set(v8AtomicString(isolate, "{{method.name}}"), v8::F
unctionTemplate::New(isolate, {{cpp_class}}V8Internal::{{method.name}}MethodCall
back, v8Undefined(), defaultSignature, {{method.number_of_required_arguments}})-
>GetFunction()); | 1168 prototypeTemplate->Set(v8AtomicString(isolate, "{{method.name}}"), v8::F
unctionTemplate::New(isolate, {{cpp_class}}V8Internal::{{method.name}}MethodCall
back, v8Undefined(), defaultSignature, {{method.number_of_required_arguments}})-
>GetFunction()); |
1170 {% endfor %} | 1169 {% endfor %} |
1171 } | 1170 } |
1172 | 1171 |
1173 {% endif %} | 1172 {% endif %} |
1174 {% endblock %} | 1173 {% endblock %} |
(...skipping 19 matching lines...) Expand all Loading... |
1194 return toNative(object); | 1193 return toNative(object); |
1195 } | 1194 } |
1196 | 1195 |
1197 {% endif %} | 1196 {% endif %} |
1198 {% endblock %} | 1197 {% endblock %} |
1199 | 1198 |
1200 | 1199 |
1201 {##############################################################################} | 1200 {##############################################################################} |
1202 {% block get_shadow_object_template %} | 1201 {% block get_shadow_object_template %} |
1203 {% if interface_name == 'Window' %} | 1202 {% if interface_name == 'Window' %} |
1204 v8::Handle<v8::ObjectTemplate> V8Window::getShadowObjectTemplate(v8::Isolate* is
olate, WrapperWorldType currentWorldType) | 1203 v8::Handle<v8::ObjectTemplate> V8Window::getShadowObjectTemplate(v8::Isolate* is
olate) |
1205 { | 1204 { |
1206 if (currentWorldType == MainWorld) { | 1205 if (DOMWrapperWorld::current(isolate)->isMainWorld()) { |
1207 DEFINE_STATIC_LOCAL(v8::Persistent<v8::ObjectTemplate>, V8WindowShadowOb
jectCacheForMainWorld, ()); | 1206 DEFINE_STATIC_LOCAL(v8::Persistent<v8::ObjectTemplate>, V8WindowShadowOb
jectCacheForMainWorld, ()); |
1208 if (V8WindowShadowObjectCacheForMainWorld.IsEmpty()) { | 1207 if (V8WindowShadowObjectCacheForMainWorld.IsEmpty()) { |
1209 TRACE_EVENT_SCOPED_SAMPLING_STATE("Blink", "BuildDOMTemplate"); | 1208 TRACE_EVENT_SCOPED_SAMPLING_STATE("Blink", "BuildDOMTemplate"); |
1210 v8::Handle<v8::ObjectTemplate> templ = v8::ObjectTemplate::New(isola
te); | 1209 v8::Handle<v8::ObjectTemplate> templ = v8::ObjectTemplate::New(isola
te); |
1211 configureShadowObjectTemplate(templ, isolate, currentWorldType); | 1210 configureShadowObjectTemplate(templ, isolate); |
1212 V8WindowShadowObjectCacheForMainWorld.Reset(isolate, templ); | 1211 V8WindowShadowObjectCacheForMainWorld.Reset(isolate, templ); |
1213 return templ; | 1212 return templ; |
1214 } | 1213 } |
1215 return v8::Local<v8::ObjectTemplate>::New(isolate, V8WindowShadowObjectC
acheForMainWorld); | 1214 return v8::Local<v8::ObjectTemplate>::New(isolate, V8WindowShadowObjectC
acheForMainWorld); |
1216 } else { | 1215 } else { |
1217 DEFINE_STATIC_LOCAL(v8::Persistent<v8::ObjectTemplate>, V8WindowShadowOb
jectCacheForNonMainWorld, ()); | 1216 DEFINE_STATIC_LOCAL(v8::Persistent<v8::ObjectTemplate>, V8WindowShadowOb
jectCacheForNonMainWorld, ()); |
1218 if (V8WindowShadowObjectCacheForNonMainWorld.IsEmpty()) { | 1217 if (V8WindowShadowObjectCacheForNonMainWorld.IsEmpty()) { |
1219 TRACE_EVENT_SCOPED_SAMPLING_STATE("Blink", "BuildDOMTemplate"); | 1218 TRACE_EVENT_SCOPED_SAMPLING_STATE("Blink", "BuildDOMTemplate"); |
1220 v8::Handle<v8::ObjectTemplate> templ = v8::ObjectTemplate::New(isola
te); | 1219 v8::Handle<v8::ObjectTemplate> templ = v8::ObjectTemplate::New(isola
te); |
1221 configureShadowObjectTemplate(templ, isolate, currentWorldType); | 1220 configureShadowObjectTemplate(templ, isolate); |
1222 V8WindowShadowObjectCacheForNonMainWorld.Reset(isolate, templ); | 1221 V8WindowShadowObjectCacheForNonMainWorld.Reset(isolate, templ); |
1223 return templ; | 1222 return templ; |
1224 } | 1223 } |
1225 return v8::Local<v8::ObjectTemplate>::New(isolate, V8WindowShadowObjectC
acheForNonMainWorld); | 1224 return v8::Local<v8::ObjectTemplate>::New(isolate, V8WindowShadowObjectC
acheForNonMainWorld); |
1226 } | 1225 } |
1227 } | 1226 } |
1228 | 1227 |
1229 {% endif %} | 1228 {% endif %} |
1230 {% endblock %} | 1229 {% endblock %} |
1231 | 1230 |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1320 {% endfilter %} | 1319 {% endfilter %} |
1321 } | 1320 } |
1322 | 1321 |
1323 template<> | 1322 template<> |
1324 v8::Handle<v8::Value> toV8NoInline({{cpp_class}}* impl, v8::Handle<v8::Object> c
reationContext, v8::Isolate* isolate) | 1323 v8::Handle<v8::Value> toV8NoInline({{cpp_class}}* impl, v8::Handle<v8::Object> c
reationContext, v8::Isolate* isolate) |
1325 { | 1324 { |
1326 return toV8(impl, creationContext, isolate); | 1325 return toV8(impl, creationContext, isolate); |
1327 } | 1326 } |
1328 | 1327 |
1329 {% endblock %} | 1328 {% endblock %} |
OLD | NEW |