| OLD | NEW |
| 1 # Copyright (C) 2005, 2006 Nikolas Zimmermann <zimmermann@kde.org> | 1 # Copyright (C) 2005, 2006 Nikolas Zimmermann <zimmermann@kde.org> |
| 2 # Copyright (C) 2006 Anders Carlsson <andersca@mac.com> | 2 # Copyright (C) 2006 Anders Carlsson <andersca@mac.com> |
| 3 # Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com> | 3 # Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com> |
| 4 # Copyright (C) 2006 Alexey Proskuryakov <ap@webkit.org> | 4 # Copyright (C) 2006 Alexey Proskuryakov <ap@webkit.org> |
| 5 # Copyright (C) 2006 Apple Computer, Inc. | 5 # Copyright (C) 2006 Apple Computer, Inc. |
| 6 # Copyright (C) 2007, 2008, 2009, 2012 Google Inc. | 6 # Copyright (C) 2007, 2008, 2009, 2012 Google Inc. |
| 7 # Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au> | 7 # Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au> |
| 8 # Copyright (C) Research In Motion Limited 2010. All rights reserved. | 8 # Copyright (C) Research In Motion Limited 2010. All rights reserved. |
| 9 # Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) | 9 # Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) |
| 10 # Copyright (C) 2012 Ericsson AB. All rights reserved. | 10 # Copyright (C) 2012 Ericsson AB. All rights reserved. |
| (...skipping 628 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 639 | 639 |
| 640 $header{nameSpaceWebCore}->addHeader("\nclass Dictionary;") if IsConstructor
Template($interface, "Event"); | 640 $header{nameSpaceWebCore}->addHeader("\nclass Dictionary;") if IsConstructor
Template($interface, "Event"); |
| 641 | 641 |
| 642 my $nativeType = GetNativeTypeForConversions($interface); | 642 my $nativeType = GetNativeTypeForConversions($interface); |
| 643 if ($interface->extendedAttributes->{"NamedConstructor"}) { | 643 if ($interface->extendedAttributes->{"NamedConstructor"}) { |
| 644 $header{nameSpaceWebCore}->addHeader(<<END); | 644 $header{nameSpaceWebCore}->addHeader(<<END); |
| 645 | 645 |
| 646 class V8${nativeType}Constructor { | 646 class V8${nativeType}Constructor { |
| 647 public: | 647 public: |
| 648 static v8::Handle<v8::FunctionTemplate> GetTemplate(v8::Isolate*, WrapperWor
ldType); | 648 static v8::Handle<v8::FunctionTemplate> GetTemplate(v8::Isolate*, WrapperWor
ldType); |
| 649 static WrapperTypeInfo info; | 649 static WrapperTypeInfo wrapperTypeInfo; |
| 650 }; | 650 }; |
| 651 END | 651 END |
| 652 } | 652 } |
| 653 | 653 |
| 654 $header{class}->addHeader("class $v8ClassName {"); | 654 $header{class}->addHeader("class $v8ClassName {"); |
| 655 $header{class}->addFooter("};"); | 655 $header{class}->addFooter("};"); |
| 656 | 656 |
| 657 $header{classPublic}->add(<<END); | 657 $header{classPublic}->add(<<END); |
| 658 static bool HasInstance(v8::Handle<v8::Value>, v8::Isolate*, WrapperWorldTyp
e); | 658 static bool HasInstance(v8::Handle<v8::Value>, v8::Isolate*, WrapperWorldTyp
e); |
| 659 static bool HasInstanceInAnyWorld(v8::Handle<v8::Value>, v8::Isolate*); | 659 static bool HasInstanceInAnyWorld(v8::Handle<v8::Value>, v8::Isolate*); |
| 660 static v8::Handle<v8::FunctionTemplate> GetTemplate(v8::Isolate*, WrapperWor
ldType); | 660 static v8::Handle<v8::FunctionTemplate> GetTemplate(v8::Isolate*, WrapperWor
ldType); |
| 661 static ${nativeType}* toNative(v8::Handle<v8::Object> object) | 661 static ${nativeType}* toNative(v8::Handle<v8::Object> object) |
| 662 { | 662 { |
| 663 return fromInternalPointer(object->GetAlignedPointerFromInternalField(v8
DOMWrapperObjectIndex)); | 663 return fromInternalPointer(object->GetAlignedPointerFromInternalField(v8
DOMWrapperObjectIndex)); |
| 664 } | 664 } |
| 665 static void derefObject(void*); | 665 static void derefObject(void*); |
| 666 static WrapperTypeInfo info; | 666 static WrapperTypeInfo wrapperTypeInfo; |
| 667 END | 667 END |
| 668 | 668 |
| 669 if (NeedsOpaqueRootForGC($interface)) { | 669 if (NeedsOpaqueRootForGC($interface)) { |
| 670 $header{classPublic}->add(" static void* opaqueRootForGC(void*, v8::I
solate*);\n"); | 670 $header{classPublic}->add(" static void* opaqueRootForGC(void*, v8::I
solate*);\n"); |
| 671 } | 671 } |
| 672 | 672 |
| 673 if (InheritsExtendedAttribute($interface, "ActiveDOMObject")) { | 673 if (InheritsExtendedAttribute($interface, "ActiveDOMObject")) { |
| 674 $header{classPublic}->add(" static ActiveDOMObject* toActiveDOMObject
(v8::Handle<v8::Object>);\n"); | 674 $header{classPublic}->add(" static ActiveDOMObject* toActiveDOMObject
(v8::Handle<v8::Object>);\n"); |
| 675 } | 675 } |
| 676 | 676 |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 820 friend v8::Handle<v8::Object> wrap(${nativeType}*, v8::Handle<v8::Object> cr
eationContext, v8::Isolate*); | 820 friend v8::Handle<v8::Object> wrap(${nativeType}*, v8::Handle<v8::Object> cr
eationContext, v8::Isolate*); |
| 821 static v8::Handle<v8::Object> createWrapper(${createWrapperArgumentType}, v8
::Handle<v8::Object> creationContext, v8::Isolate*); | 821 static v8::Handle<v8::Object> createWrapper(${createWrapperArgumentType}, v8
::Handle<v8::Object> creationContext, v8::Isolate*); |
| 822 END | 822 END |
| 823 } | 823 } |
| 824 | 824 |
| 825 $header{nameSpaceWebCore}->add(<<END); | 825 $header{nameSpaceWebCore}->add(<<END); |
| 826 | 826 |
| 827 template<> | 827 template<> |
| 828 class WrapperTypeTraits<${nativeType} > { | 828 class WrapperTypeTraits<${nativeType} > { |
| 829 public: | 829 public: |
| 830 static WrapperTypeInfo* info() { return &${v8ClassName}::info; } | 830 static WrapperTypeInfo* wrapperTypeInfo() { return &${v8ClassName}::wrapperT
ypeInfo; } |
| 831 }; | 831 }; |
| 832 END | 832 END |
| 833 | 833 |
| 834 my $customWrap = NeedsSpecialWrap($interface); | 834 my $customWrap = NeedsSpecialWrap($interface); |
| 835 if ($noToV8) { | 835 if ($noToV8) { |
| 836 die "Can't suppress toV8 for subclass\n" if $interface->parent; | 836 die "Can't suppress toV8 for subclass\n" if $interface->parent; |
| 837 } elsif ($noWrap) { | 837 } elsif ($noWrap) { |
| 838 die "Must have custom toV8\n" if !$customWrap; | 838 die "Must have custom toV8\n" if !$customWrap; |
| 839 $header{nameSpaceWebCore}->add(<<END); | 839 $header{nameSpaceWebCore}->add(<<END); |
| 840 class ${nativeType}; | 840 class ${nativeType}; |
| (...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1143 sub GenerateDomainSafeFunctionGetter | 1143 sub GenerateDomainSafeFunctionGetter |
| 1144 { | 1144 { |
| 1145 my $function = shift; | 1145 my $function = shift; |
| 1146 my $interface = shift; | 1146 my $interface = shift; |
| 1147 | 1147 |
| 1148 my $implClassName = GetImplName($interface); | 1148 my $implClassName = GetImplName($interface); |
| 1149 my $v8ClassName = GetV8ClassName($interface); | 1149 my $v8ClassName = GetV8ClassName($interface); |
| 1150 my $funcName = $function->name; | 1150 my $funcName = $function->name; |
| 1151 | 1151 |
| 1152 my $functionLength = GetFunctionLength($function); | 1152 my $functionLength = GetFunctionLength($function); |
| 1153 my $signature = "v8::Signature::New(V8PerIsolateData::from(info.GetIsolate()
)->rawTemplate(&" . $v8ClassName . "::info, currentWorldType))"; | 1153 my $signature = "v8::Signature::New(V8PerIsolateData::from(info.GetIsolate()
)->rawTemplate(&" . $v8ClassName . "::wrapperTypeInfo, currentWorldType))"; |
| 1154 if ($function->extendedAttributes->{"DoNotCheckSignature"}) { | 1154 if ($function->extendedAttributes->{"DoNotCheckSignature"}) { |
| 1155 $signature = "v8::Local<v8::Signature>()"; | 1155 $signature = "v8::Local<v8::Signature>()"; |
| 1156 } | 1156 } |
| 1157 | 1157 |
| 1158 my $newTemplateParams = "${implClassName}V8Internal::${funcName}MethodCallba
ck, v8Undefined(), $signature"; | 1158 my $newTemplateParams = "${implClassName}V8Internal::${funcName}MethodCallba
ck, v8Undefined(), $signature"; |
| 1159 | 1159 |
| 1160 AddToImplIncludes("bindings/v8/BindingSecurity.h"); | 1160 AddToImplIncludes("bindings/v8/BindingSecurity.h"); |
| 1161 $implementation{nameSpaceInternal}->add(<<END); | 1161 $implementation{nameSpaceInternal}->add(<<END); |
| 1162 static void ${funcName}AttributeGetter(v8::Local<v8::String> name, const v8::Pro
pertyCallbackInfo<v8::Value>& info) | 1162 static void ${funcName}AttributeGetter(v8::Local<v8::String> name, const v8::Pro
pertyCallbackInfo<v8::Value>& info) |
| 1163 { | 1163 { |
| (...skipping 1502 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2666 $code .= " RefPtr<${implClassName}> impl = ${implClassName}::create(${arg
umentString});\n"; | 2666 $code .= " RefPtr<${implClassName}> impl = ${implClassName}::create(${arg
umentString});\n"; |
| 2667 $code .= " v8::Handle<v8::Object> wrapper = args.Holder();\n"; | 2667 $code .= " v8::Handle<v8::Object> wrapper = args.Holder();\n"; |
| 2668 | 2668 |
| 2669 if ($interface->extendedAttributes->{"ConstructorRaisesException"}) { | 2669 if ($interface->extendedAttributes->{"ConstructorRaisesException"}) { |
| 2670 $code .= " if (es.throwIfNeeded())\n"; | 2670 $code .= " if (es.throwIfNeeded())\n"; |
| 2671 $code .= " return;\n"; | 2671 $code .= " return;\n"; |
| 2672 } | 2672 } |
| 2673 | 2673 |
| 2674 $code .= <<END; | 2674 $code .= <<END; |
| 2675 | 2675 |
| 2676 V8DOMWrapper::associateObjectWithWrapper<${v8ClassName}>(impl.release(), &${
v8ClassName}::info, wrapper, args.GetIsolate(), WrapperConfiguration::Dependent)
; | 2676 V8DOMWrapper::associateObjectWithWrapper<${v8ClassName}>(impl.release(), &${
v8ClassName}::wrapperTypeInfo, wrapper, args.GetIsolate(), WrapperConfiguration:
:Dependent); |
| 2677 args.GetReturnValue().Set(wrapper); | 2677 args.GetReturnValue().Set(wrapper); |
| 2678 } | 2678 } |
| 2679 | 2679 |
| 2680 END | 2680 END |
| 2681 $implementation{nameSpaceInternal}->add($code); | 2681 $implementation{nameSpaceInternal}->add($code); |
| 2682 } | 2682 } |
| 2683 | 2683 |
| 2684 # The Web IDL specification states that Interface objects for interfaces MUST ha
ve a property named | 2684 # The Web IDL specification states that Interface objects for interfaces MUST ha
ve a property named |
| 2685 # "length" that returns the length of the shortest argument list of the entries
in the effective | 2685 # "length" that returns the length of the shortest argument list of the entries
in the effective |
| 2686 # overload set for constructors. In other words, use the lowest number of mandat
ory arguments among | 2686 # overload set for constructors. In other words, use the lowest number of mandat
ory arguments among |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2809 $implementation{nameSpaceInternal}->add(<<END); | 2809 $implementation{nameSpaceInternal}->add(<<END); |
| 2810 if (!${attrName}.IsEmpty()) | 2810 if (!${attrName}.IsEmpty()) |
| 2811 event->${setter}(SerializedScriptValue::createAndSwallowExceptions($
{attrName}, args.GetIsolate())); | 2811 event->${setter}(SerializedScriptValue::createAndSwallowExceptions($
{attrName}, args.GetIsolate())); |
| 2812 END | 2812 END |
| 2813 } | 2813 } |
| 2814 $implementation{nameSpaceInternal}->add(" }\n\n"); | 2814 $implementation{nameSpaceInternal}->add(" }\n\n"); |
| 2815 } | 2815 } |
| 2816 | 2816 |
| 2817 $implementation{nameSpaceInternal}->add(<<END); | 2817 $implementation{nameSpaceInternal}->add(<<END); |
| 2818 v8::Handle<v8::Object> wrapper = args.Holder(); | 2818 v8::Handle<v8::Object> wrapper = args.Holder(); |
| 2819 V8DOMWrapper::associateObjectWithWrapper<${v8ClassName}>(event.release(), &$
{v8ClassName}::info, wrapper, args.GetIsolate(), WrapperConfiguration::Dependent
); | 2819 V8DOMWrapper::associateObjectWithWrapper<${v8ClassName}>(event.release(), &$
{v8ClassName}::wrapperTypeInfo, wrapper, args.GetIsolate(), WrapperConfiguration
::Dependent); |
| 2820 v8SetReturnValue(args, wrapper); | 2820 v8SetReturnValue(args, wrapper); |
| 2821 } | 2821 } |
| 2822 END | 2822 END |
| 2823 | 2823 |
| 2824 my $code = ""; | 2824 my $code = ""; |
| 2825 $code .= <<END; | 2825 $code .= <<END; |
| 2826 bool fill${implClassName}Init(${implClassName}Init& eventInit, const Dictionary&
options) | 2826 bool fill${implClassName}Init(${implClassName}Init& eventInit, const Dictionary&
options) |
| 2827 { | 2827 { |
| 2828 END | 2828 END |
| 2829 | 2829 |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2883 if (InheritsExtendedAttribute($interface, "ActiveDOMObject")) { | 2883 if (InheritsExtendedAttribute($interface, "ActiveDOMObject")) { |
| 2884 $toActiveDOMObject = "${v8ClassName}::toActiveDOMObject"; | 2884 $toActiveDOMObject = "${v8ClassName}::toActiveDOMObject"; |
| 2885 } | 2885 } |
| 2886 | 2886 |
| 2887 my $toEventTarget = "0"; | 2887 my $toEventTarget = "0"; |
| 2888 if (InheritsInterface($interface, "EventTarget")) { | 2888 if (InheritsInterface($interface, "EventTarget")) { |
| 2889 $toEventTarget = "${v8ClassName}::toEventTarget"; | 2889 $toEventTarget = "${v8ClassName}::toEventTarget"; |
| 2890 } | 2890 } |
| 2891 | 2891 |
| 2892 $implementation{nameSpaceWebCore}->add(<<END); | 2892 $implementation{nameSpaceWebCore}->add(<<END); |
| 2893 WrapperTypeInfo ${v8ClassName}Constructor::info = { ${v8ClassName}Constructor::G
etTemplate, ${v8ClassName}::derefObject, $toActiveDOMObject, $toEventTarget, 0,
${v8ClassName}::installPerContextEnabledPrototypeProperties, 0, WrapperTypeObjec
tPrototype }; | 2893 WrapperTypeInfo ${v8ClassName}Constructor::wrapperTypeInfo = { ${v8ClassName}Con
structor::GetTemplate, ${v8ClassName}::derefObject, $toActiveDOMObject, $toEvent
Target, 0, ${v8ClassName}::installPerContextEnabledPrototypeProperties, 0, Wrapp
erTypeObjectPrototype }; |
| 2894 | 2894 |
| 2895 END | 2895 END |
| 2896 | 2896 |
| 2897 my $code = ""; | 2897 my $code = ""; |
| 2898 $code .= <<END; | 2898 $code .= <<END; |
| 2899 static void ${v8ClassName}ConstructorCallback(const v8::FunctionCallbackInfo<v8:
:Value>& args) | 2899 static void ${v8ClassName}ConstructorCallback(const v8::FunctionCallbackInfo<v8:
:Value>& args) |
| 2900 { | 2900 { |
| 2901 END | 2901 END |
| 2902 $code .= $maybeObserveFeature if $maybeObserveFeature; | 2902 $code .= $maybeObserveFeature if $maybeObserveFeature; |
| 2903 $code .= $maybeDeprecateFeature if $maybeDeprecateFeature; | 2903 $code .= $maybeDeprecateFeature if $maybeDeprecateFeature; |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2947 $code .= " RefPtr<${implClassName}> impl = ${implClassName}::createForJSC
onstructor(${argumentString});\n"; | 2947 $code .= " RefPtr<${implClassName}> impl = ${implClassName}::createForJSC
onstructor(${argumentString});\n"; |
| 2948 $code .= " v8::Handle<v8::Object> wrapper = args.Holder();\n"; | 2948 $code .= " v8::Handle<v8::Object> wrapper = args.Holder();\n"; |
| 2949 | 2949 |
| 2950 if ($interface->extendedAttributes->{"ConstructorRaisesException"}) { | 2950 if ($interface->extendedAttributes->{"ConstructorRaisesException"}) { |
| 2951 $code .= " if (es.throwIfNeeded())\n"; | 2951 $code .= " if (es.throwIfNeeded())\n"; |
| 2952 $code .= " return;\n"; | 2952 $code .= " return;\n"; |
| 2953 } | 2953 } |
| 2954 | 2954 |
| 2955 $code .= <<END; | 2955 $code .= <<END; |
| 2956 | 2956 |
| 2957 V8DOMWrapper::associateObjectWithWrapper<${v8ClassName}>(impl.release(), &${
v8ClassName}Constructor::info, wrapper, args.GetIsolate(), WrapperConfiguration:
:Dependent); | 2957 V8DOMWrapper::associateObjectWithWrapper<${v8ClassName}>(impl.release(), &${
v8ClassName}Constructor::wrapperTypeInfo, wrapper, args.GetIsolate(), WrapperCon
figuration::Dependent); |
| 2958 args.GetReturnValue().Set(wrapper); | 2958 args.GetReturnValue().Set(wrapper); |
| 2959 } | 2959 } |
| 2960 | 2960 |
| 2961 END | 2961 END |
| 2962 $implementation{nameSpaceWebCore}->add($code); | 2962 $implementation{nameSpaceWebCore}->add($code); |
| 2963 | 2963 |
| 2964 $code = <<END; | 2964 $code = <<END; |
| 2965 v8::Handle<v8::FunctionTemplate> ${v8ClassName}Constructor::GetTemplate(v8::Isol
ate* isolate, WrapperWorldType currentWorldType) | 2965 v8::Handle<v8::FunctionTemplate> ${v8ClassName}Constructor::GetTemplate(v8::Isol
ate* isolate, WrapperWorldType currentWorldType) |
| 2966 { | 2966 { |
| 2967 // This is only for getting a unique pointer which we can pass to privateTem
plate. | 2967 // This is only for getting a unique pointer which we can pass to privateTem
plate. |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3084 # Constructor | 3084 # Constructor |
| 3085 if ($isConstructor) { | 3085 if ($isConstructor) { |
| 3086 my $constructorType = $attribute->type; | 3086 my $constructorType = $attribute->type; |
| 3087 $constructorType =~ s/Constructor$//; | 3087 $constructorType =~ s/Constructor$//; |
| 3088 # $constructorType ~= /Constructor$/ indicates that it is NamedConstruct
or. | 3088 # $constructorType ~= /Constructor$/ indicates that it is NamedConstruct
or. |
| 3089 # We do not generate the header file for NamedConstructor of class XXXX, | 3089 # We do not generate the header file for NamedConstructor of class XXXX, |
| 3090 # since we generate the NamedConstructor declaration into the header fil
e of class XXXX. | 3090 # since we generate the NamedConstructor declaration into the header fil
e of class XXXX. |
| 3091 if ($constructorType !~ /Constructor$/ || $attribute->extendedAttributes
->{"CustomConstructor"}) { | 3091 if ($constructorType !~ /Constructor$/ || $attribute->extendedAttributes
->{"CustomConstructor"}) { |
| 3092 AddToImplIncludes("V8${constructorType}.h"); | 3092 AddToImplIncludes("V8${constructorType}.h"); |
| 3093 } | 3093 } |
| 3094 $data = "&V8${constructorType}::info"; | 3094 $data = "&V8${constructorType}::wrapperTypeInfo"; |
| 3095 $getter = "${implClassName}V8Internal::${implClassName}ConstructorGetter
"; | 3095 $getter = "${implClassName}V8Internal::${implClassName}ConstructorGetter
"; |
| 3096 $setter = "${implClassName}V8Internal::${implClassName}ReplaceableAttrib
uteSetterCallback"; | 3096 $setter = "${implClassName}V8Internal::${implClassName}ReplaceableAttrib
uteSetterCallback"; |
| 3097 $getterForMainWorld = "0"; | 3097 $getterForMainWorld = "0"; |
| 3098 $setterForMainWorld = "0"; | 3098 $setterForMainWorld = "0"; |
| 3099 } else { | 3099 } else { |
| 3100 # Default Getter and Setter | 3100 # Default Getter and Setter |
| 3101 $getter = "${implClassName}V8Internal::${attrName}AttributeGetterCallbac
k"; | 3101 $getter = "${implClassName}V8Internal::${attrName}AttributeGetterCallbac
k"; |
| 3102 $setter = "${implClassName}V8Internal::${attrName}AttributeSetterCallbac
k"; | 3102 $setter = "${implClassName}V8Internal::${attrName}AttributeSetterCallbac
k"; |
| 3103 $getterForMainWorld = "${getter}ForMainWorld"; | 3103 $getterForMainWorld = "${getter}ForMainWorld"; |
| 3104 $setterForMainWorld = "${setter}ForMainWorld"; | 3104 $setterForMainWorld = "${setter}ForMainWorld"; |
| (...skipping 895 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4000 # Find the super descriptor. | 4000 # Find the super descriptor. |
| 4001 my $parentClass = ""; | 4001 my $parentClass = ""; |
| 4002 my $parentClassTemplate = ""; | 4002 my $parentClassTemplate = ""; |
| 4003 if ($interface->parent) { | 4003 if ($interface->parent) { |
| 4004 my $parent = $interface->parent; | 4004 my $parent = $interface->parent; |
| 4005 AddToImplIncludes("V8${parent}.h"); | 4005 AddToImplIncludes("V8${parent}.h"); |
| 4006 $parentClass = "V8" . $parent; | 4006 $parentClass = "V8" . $parent; |
| 4007 $parentClassTemplate = $parentClass . "::GetTemplate(isolate, currentWor
ldType)"; | 4007 $parentClassTemplate = $parentClass . "::GetTemplate(isolate, currentWor
ldType)"; |
| 4008 } | 4008 } |
| 4009 | 4009 |
| 4010 my $parentClassInfo = $parentClass ? "&${parentClass}::info" : "0"; | 4010 my $parentClassInfo = $parentClass ? "&${parentClass}::wrapperTypeInfo" : "0
"; |
| 4011 my $WrapperTypePrototype = $interface->isException ? "WrapperTypeErrorProtot
ype" : "WrapperTypeObjectPrototype"; | 4011 my $WrapperTypePrototype = $interface->isException ? "WrapperTypeErrorProtot
ype" : "WrapperTypeObjectPrototype"; |
| 4012 | 4012 |
| 4013 if (!IsSVGTypeNeedingTearOff($interfaceName)) { | 4013 if (!IsSVGTypeNeedingTearOff($interfaceName)) { |
| 4014 my $code = <<END; | 4014 my $code = <<END; |
| 4015 static void initializeScriptWrappableForInterface(${implClassName}* object) | 4015 static void initializeScriptWrappableForInterface(${implClassName}* object) |
| 4016 { | 4016 { |
| 4017 if (ScriptWrappable::wrapperCanBeStoredInObject(object)) | 4017 if (ScriptWrappable::wrapperCanBeStoredInObject(object)) |
| 4018 ScriptWrappable::setTypeInfoInObject(object, &${v8ClassName}::info); | 4018 ScriptWrappable::setTypeInfoInObject(object, &${v8ClassName}::wrapperTyp
eInfo); |
| 4019 else | 4019 else |
| 4020 ASSERT_NOT_REACHED(); | 4020 ASSERT_NOT_REACHED(); |
| 4021 } | 4021 } |
| 4022 | 4022 |
| 4023 } // namespace WebCore | 4023 } // namespace WebCore |
| 4024 | 4024 |
| 4025 // In ScriptWrappable::init, the use of a local function declaration has an issu
e on Windows: | 4025 // In ScriptWrappable::init, the use of a local function declaration has an issu
e on Windows: |
| 4026 // the local declaration does not pick up the surrounding namespace. Therefore,
we provide this function | 4026 // the local declaration does not pick up the surrounding namespace. Therefore,
we provide this function |
| 4027 // in the global namespace. | 4027 // in the global namespace. |
| 4028 // (More info on the MSVC bug here: http://connect.microsoft.com/VisualStudio/fe
edback/details/664619/the-namespace-of-local-function-declarations-in-c) | 4028 // (More info on the MSVC bug here: http://connect.microsoft.com/VisualStudio/fe
edback/details/664619/the-namespace-of-local-function-declarations-in-c) |
| 4029 END | 4029 END |
| 4030 | 4030 |
| 4031 if (GetNamespaceForInterface($interface) eq "WebCore") { | 4031 if (GetNamespaceForInterface($interface) eq "WebCore") { |
| 4032 $code .= "void webCoreInitializeScriptWrappableForInterface(WebCore::${i
mplClassName}* object)\n"; | 4032 $code .= "void webCoreInitializeScriptWrappableForInterface(WebCore::${i
mplClassName}* object)\n"; |
| 4033 } else { | 4033 } else { |
| 4034 $code .= "void webCoreInitializeScriptWrappableForInterface(${implClassN
ame}* object)\n"; | 4034 $code .= "void webCoreInitializeScriptWrappableForInterface(${implClassN
ame}* object)\n"; |
| 4035 } | 4035 } |
| 4036 | 4036 |
| 4037 $code .= <<END; | 4037 $code .= <<END; |
| 4038 { | 4038 { |
| 4039 WebCore::initializeScriptWrappableForInterface(object); | 4039 WebCore::initializeScriptWrappableForInterface(object); |
| 4040 } | 4040 } |
| 4041 | 4041 |
| 4042 namespace WebCore { | 4042 namespace WebCore { |
| 4043 END | 4043 END |
| 4044 $implementation{nameSpaceWebCore}->addHeader($code); | 4044 $implementation{nameSpaceWebCore}->addHeader($code); |
| 4045 } | 4045 } |
| 4046 | 4046 |
| 4047 my $code = "WrapperTypeInfo ${v8ClassName}::info = { ${v8ClassName}::GetTemp
late, ${v8ClassName}::derefObject, $toActiveDOMObject, $toEventTarget, "; | 4047 my $code = "WrapperTypeInfo ${v8ClassName}::wrapperTypeInfo = { ${v8ClassNam
e}::GetTemplate, ${v8ClassName}::derefObject, $toActiveDOMObject, $toEventTarget
, "; |
| 4048 $code .= "$rootForGC, ${v8ClassName}::installPerContextEnabledPrototypePrope
rties, $parentClassInfo, $WrapperTypePrototype };\n"; | 4048 $code .= "$rootForGC, ${v8ClassName}::installPerContextEnabledPrototypePrope
rties, $parentClassInfo, $WrapperTypePrototype };\n"; |
| 4049 $implementation{nameSpaceWebCore}->addHeader($code); | 4049 $implementation{nameSpaceWebCore}->addHeader($code); |
| 4050 | 4050 |
| 4051 $implementation{nameSpaceInternal}->add("template <typename T> void V8_USE(T
) { }\n\n"); | 4051 $implementation{nameSpaceInternal}->add("template <typename T> void V8_USE(T
) { }\n\n"); |
| 4052 | 4052 |
| 4053 my $hasConstructors = 0; | 4053 my $hasConstructors = 0; |
| 4054 my $hasReplaceable = 0; | 4054 my $hasReplaceable = 0; |
| 4055 | 4055 |
| 4056 # Generate property accessors for attributes. | 4056 # Generate property accessors for attributes. |
| 4057 for (my $index = 0; $index < @{$interface->attributes}; $index++) { | 4057 for (my $index = 0; $index < @{$interface->attributes}; $index++) { |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4263 } elsif (IsConstructorTemplate($interface, "Event")) { | 4263 } elsif (IsConstructorTemplate($interface, "Event")) { |
| 4264 GenerateEventConstructor($interface); | 4264 GenerateEventConstructor($interface); |
| 4265 } | 4265 } |
| 4266 } | 4266 } |
| 4267 if (IsConstructable($interface)) { | 4267 if (IsConstructable($interface)) { |
| 4268 GenerateConstructorCallback($interface); | 4268 GenerateConstructorCallback($interface); |
| 4269 } | 4269 } |
| 4270 | 4270 |
| 4271 my $access_check = ""; | 4271 my $access_check = ""; |
| 4272 if ($interface->extendedAttributes->{"CheckSecurity"} && $interfaceName ne "
Window") { | 4272 if ($interface->extendedAttributes->{"CheckSecurity"} && $interfaceName ne "
Window") { |
| 4273 $access_check = "instance->SetAccessCheckCallbacks(${implClassName}V8Int
ernal::namedSecurityCheck, ${implClassName}V8Internal::indexedSecurityCheck, v8:
:External::New(&${v8ClassName}::info));"; | 4273 $access_check = "instance->SetAccessCheckCallbacks(${implClassName}V8Int
ernal::namedSecurityCheck, ${implClassName}V8Internal::indexedSecurityCheck, v8:
:External::New(&${v8ClassName}::wrapperTypeInfo));"; |
| 4274 } | 4274 } |
| 4275 | 4275 |
| 4276 # For the Window interface, generate the shadow object template | 4276 # For the Window interface, generate the shadow object template |
| 4277 # configuration method. | 4277 # configuration method. |
| 4278 if ($interfaceName eq "Window") { | 4278 if ($interfaceName eq "Window") { |
| 4279 $implementation{nameSpaceWebCore}->add(<<END); | 4279 $implementation{nameSpaceWebCore}->add(<<END); |
| 4280 static void ConfigureShadowObjectTemplate(v8::Handle<v8::ObjectTemplate> templ,
v8::Isolate* isolate, WrapperWorldType currentWorldType) | 4280 static void ConfigureShadowObjectTemplate(v8::Handle<v8::ObjectTemplate> templ,
v8::Isolate* isolate, WrapperWorldType currentWorldType) |
| 4281 { | 4281 { |
| 4282 V8DOMConfiguration::installAttributes(templ, v8::Handle<v8::ObjectTemplate>(
), shadowAttributes, WTF_ARRAY_LENGTH(shadowAttributes), isolate, currentWorldTy
pe); | 4282 V8DOMConfiguration::installAttributes(templ, v8::Handle<v8::ObjectTemplate>(
), shadowAttributes, WTF_ARRAY_LENGTH(shadowAttributes), isolate, currentWorldTy
pe); |
| 4283 | 4283 |
| 4284 // Install a security handler with V8. | 4284 // Install a security handler with V8. |
| 4285 templ->SetAccessCheckCallbacks(V8Window::namedSecurityCheckCustom, V8Window:
:indexedSecurityCheckCustom, v8::External::New(&V8Window::info)); | 4285 templ->SetAccessCheckCallbacks(V8Window::namedSecurityCheckCustom, V8Window:
:indexedSecurityCheckCustom, v8::External::New(&V8Window::wrapperTypeInfo)); |
| 4286 templ->SetInternalFieldCount(V8Window::internalFieldCount); | 4286 templ->SetInternalFieldCount(V8Window::internalFieldCount); |
| 4287 } | 4287 } |
| 4288 END | 4288 END |
| 4289 } | 4289 } |
| 4290 | 4290 |
| 4291 if (!$parentClassTemplate) { | 4291 if (!$parentClassTemplate) { |
| 4292 $parentClassTemplate = "v8::Local<v8::FunctionTemplate>()"; | 4292 $parentClassTemplate = "v8::Local<v8::FunctionTemplate>()"; |
| 4293 } | 4293 } |
| 4294 | 4294 |
| 4295 # Generate the template configuration method | 4295 # Generate the template configuration method |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4438 # Special cases | 4438 # Special cases |
| 4439 if ($interfaceName eq "Window") { | 4439 if ($interfaceName eq "Window") { |
| 4440 $code .= <<END; | 4440 $code .= <<END; |
| 4441 | 4441 |
| 4442 proto->SetInternalFieldCount(V8Window::internalFieldCount); | 4442 proto->SetInternalFieldCount(V8Window::internalFieldCount); |
| 4443 desc->SetHiddenPrototype(true); | 4443 desc->SetHiddenPrototype(true); |
| 4444 instance->SetInternalFieldCount(V8Window::internalFieldCount); | 4444 instance->SetInternalFieldCount(V8Window::internalFieldCount); |
| 4445 // Set access check callbacks, but turned off initially. | 4445 // Set access check callbacks, but turned off initially. |
| 4446 // When a context is detached from a frame, turn on the access check. | 4446 // When a context is detached from a frame, turn on the access check. |
| 4447 // Turning on checks also invalidates inline caches of the object. | 4447 // Turning on checks also invalidates inline caches of the object. |
| 4448 instance->SetAccessCheckCallbacks(V8Window::namedSecurityCheckCustom, V8Wind
ow::indexedSecurityCheckCustom, v8::External::New(&V8Window::info), false); | 4448 instance->SetAccessCheckCallbacks(V8Window::namedSecurityCheckCustom, V8Wind
ow::indexedSecurityCheckCustom, v8::External::New(&V8Window::wrapperTypeInfo), f
alse); |
| 4449 END | 4449 END |
| 4450 } | 4450 } |
| 4451 if ($interfaceName eq "HTMLDocument" or $interfaceName eq "DedicatedWorkerGl
obalScope" or $interfaceName eq "SharedWorkerGlobalScope") { | 4451 if ($interfaceName eq "HTMLDocument" or $interfaceName eq "DedicatedWorkerGl
obalScope" or $interfaceName eq "SharedWorkerGlobalScope") { |
| 4452 $code .= <<END; | 4452 $code .= <<END; |
| 4453 desc->SetHiddenPrototype(true); | 4453 desc->SetHiddenPrototype(true); |
| 4454 END | 4454 END |
| 4455 } | 4455 } |
| 4456 | 4456 |
| 4457 $code .= <<END; | 4457 $code .= <<END; |
| 4458 | 4458 |
| 4459 // Custom toString template | 4459 // Custom toString template |
| 4460 desc->Set(v8::String::NewSymbol("toString"), V8PerIsolateData::current()->to
StringTemplate()); | 4460 desc->Set(v8::String::NewSymbol("toString"), V8PerIsolateData::current()->to
StringTemplate()); |
| 4461 return desc; | 4461 return desc; |
| 4462 } | 4462 } |
| 4463 | 4463 |
| 4464 END | 4464 END |
| 4465 $implementation{nameSpaceWebCore}->add($code); | 4465 $implementation{nameSpaceWebCore}->add($code); |
| 4466 | 4466 |
| 4467 $implementation{nameSpaceWebCore}->add(<<END); | 4467 $implementation{nameSpaceWebCore}->add(<<END); |
| 4468 v8::Handle<v8::FunctionTemplate> ${v8ClassName}::GetTemplate(v8::Isolate* isolat
e, WrapperWorldType currentWorldType) | 4468 v8::Handle<v8::FunctionTemplate> ${v8ClassName}::GetTemplate(v8::Isolate* isolat
e, WrapperWorldType currentWorldType) |
| 4469 { | 4469 { |
| 4470 V8PerIsolateData* data = V8PerIsolateData::from(isolate); | 4470 V8PerIsolateData* data = V8PerIsolateData::from(isolate); |
| 4471 V8PerIsolateData::TemplateMap::iterator result = data->templateMap(currentWo
rldType).find(&info); | 4471 V8PerIsolateData::TemplateMap::iterator result = data->templateMap(currentWo
rldType).find(&wrapperTypeInfo); |
| 4472 if (result != data->templateMap(currentWorldType).end()) | 4472 if (result != data->templateMap(currentWorldType).end()) |
| 4473 return result->value.newLocal(isolate); | 4473 return result->value.newLocal(isolate); |
| 4474 | 4474 |
| 4475 TRACE_EVENT_SCOPED_SAMPLING_STATE("Blink", "BuildDOMTemplate"); | 4475 TRACE_EVENT_SCOPED_SAMPLING_STATE("Blink", "BuildDOMTemplate"); |
| 4476 v8::HandleScope handleScope(isolate); | 4476 v8::HandleScope handleScope(isolate); |
| 4477 v8::Handle<v8::FunctionTemplate> templ = | 4477 v8::Handle<v8::FunctionTemplate> templ = |
| 4478 Configure${v8ClassName}Template(data->rawTemplate(&info, currentWorldTyp
e), isolate, currentWorldType); | 4478 Configure${v8ClassName}Template(data->rawTemplate(&wrapperTypeInfo, curr
entWorldType), isolate, currentWorldType); |
| 4479 data->templateMap(currentWorldType).add(&info, UnsafePersistent<v8::Function
Template>(isolate, templ)); | 4479 data->templateMap(currentWorldType).add(&wrapperTypeInfo, UnsafePersistent<v
8::FunctionTemplate>(isolate, templ)); |
| 4480 return handleScope.Close(templ); | 4480 return handleScope.Close(templ); |
| 4481 } | 4481 } |
| 4482 | 4482 |
| 4483 END | 4483 END |
| 4484 $implementation{nameSpaceWebCore}->add(<<END); | 4484 $implementation{nameSpaceWebCore}->add(<<END); |
| 4485 bool ${v8ClassName}::HasInstance(v8::Handle<v8::Value> jsValue, v8::Isolate* iso
late, WrapperWorldType currentWorldType) | 4485 bool ${v8ClassName}::HasInstance(v8::Handle<v8::Value> jsValue, v8::Isolate* iso
late, WrapperWorldType currentWorldType) |
| 4486 { | 4486 { |
| 4487 return V8PerIsolateData::from(isolate)->hasInstance(&info, jsValue, currentW
orldType); | 4487 return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, jsValu
e, currentWorldType); |
| 4488 } | 4488 } |
| 4489 | 4489 |
| 4490 END | 4490 END |
| 4491 $implementation{nameSpaceWebCore}->add(<<END); | 4491 $implementation{nameSpaceWebCore}->add(<<END); |
| 4492 bool ${v8ClassName}::HasInstanceInAnyWorld(v8::Handle<v8::Value> jsValue, v8::Is
olate* isolate) | 4492 bool ${v8ClassName}::HasInstanceInAnyWorld(v8::Handle<v8::Value> jsValue, v8::Is
olate* isolate) |
| 4493 { | 4493 { |
| 4494 return V8PerIsolateData::from(isolate)->hasInstance(&info, jsValue, MainWorl
d) | 4494 return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, jsValu
e, MainWorld) |
| 4495 || V8PerIsolateData::from(isolate)->hasInstance(&info, jsValue, Isolated
World) | 4495 || V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, jsValu
e, IsolatedWorld) |
| 4496 || V8PerIsolateData::from(isolate)->hasInstance(&info, jsValue, WorkerWo
rld); | 4496 || V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, jsValu
e, WorkerWorld); |
| 4497 } | 4497 } |
| 4498 | 4498 |
| 4499 END | 4499 END |
| 4500 | 4500 |
| 4501 if (@perContextEnabledAttributes) { | 4501 if (@perContextEnabledAttributes) { |
| 4502 my $code = ""; | 4502 my $code = ""; |
| 4503 $code .= <<END; | 4503 $code .= <<END; |
| 4504 void ${v8ClassName}::installPerContextEnabledProperties(v8::Handle<v8::Object> i
nstance, ${nativeType}* impl, v8::Isolate* isolate) | 4504 void ${v8ClassName}::installPerContextEnabledProperties(v8::Handle<v8::Object> i
nstance, ${nativeType}* impl, v8::Isolate* isolate) |
| 4505 { | 4505 { |
| 4506 v8::Local<v8::Object> proto = v8::Local<v8::Object>::Cast(instance->GetProto
type()); | 4506 v8::Local<v8::Object> proto = v8::Local<v8::Object>::Cast(instance->GetProto
type()); |
| (...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4909 } | 4909 } |
| 4910 | 4910 |
| 4911 my $code = ""; | 4911 my $code = ""; |
| 4912 $code .= <<END; | 4912 $code .= <<END; |
| 4913 v8::Handle<v8::Object> ${v8ClassName}::createWrapper(${createWrapperArgumentType
} impl, v8::Handle<v8::Object> creationContext, v8::Isolate* isolate) | 4913 v8::Handle<v8::Object> ${v8ClassName}::createWrapper(${createWrapperArgumentType
} impl, v8::Handle<v8::Object> creationContext, v8::Isolate* isolate) |
| 4914 { | 4914 { |
| 4915 ASSERT(impl); | 4915 ASSERT(impl); |
| 4916 ASSERT(!DOMDataStore::containsWrapper<${v8ClassName}>(impl.get(), isolate)); | 4916 ASSERT(!DOMDataStore::containsWrapper<${v8ClassName}>(impl.get(), isolate)); |
| 4917 if (ScriptWrappable::wrapperCanBeStoredInObject(impl.get())) { | 4917 if (ScriptWrappable::wrapperCanBeStoredInObject(impl.get())) { |
| 4918 const WrapperTypeInfo* actualInfo = ScriptWrappable::getTypeInfoFromObje
ct(impl.get()); | 4918 const WrapperTypeInfo* actualInfo = ScriptWrappable::getTypeInfoFromObje
ct(impl.get()); |
| 4919 // Might be a XXXConstructor::info instead of an XXX::info. These will b
oth have | 4919 // Might be a XXXConstructor::wrapperTypeInfo instead of an XXX::wrapper
TypeInfo. These will both have |
| 4920 // the same object de-ref functions, though, so use that as the basis of
the check. | 4920 // the same object de-ref functions, though, so use that as the basis of
the check. |
| 4921 RELEASE_ASSERT_WITH_SECURITY_IMPLICATION(actualInfo->derefObjectFunction
== info.derefObjectFunction); | 4921 RELEASE_ASSERT_WITH_SECURITY_IMPLICATION(actualInfo->derefObjectFunction
== wrapperTypeInfo.derefObjectFunction); |
| 4922 } | 4922 } |
| 4923 | 4923 |
| 4924 END | 4924 END |
| 4925 | 4925 |
| 4926 $code .= <<END if ($baseType ne $interfaceName); | 4926 $code .= <<END if ($baseType ne $interfaceName); |
| 4927 END | 4927 END |
| 4928 | 4928 |
| 4929 if (InheritsInterface($interface, "Document")) { | 4929 if (InheritsInterface($interface, "Document")) { |
| 4930 AddToImplIncludes("core/frame/Frame.h"); | 4930 AddToImplIncludes("core/frame/Frame.h"); |
| 4931 $code .= <<END; | 4931 $code .= <<END; |
| 4932 if (Frame* frame = impl->frame()) { | 4932 if (Frame* frame = impl->frame()) { |
| 4933 if (frame->script().initializeMainWorld()) { | 4933 if (frame->script().initializeMainWorld()) { |
| 4934 // initializeMainWorld may have created a wrapper for the object, re
try from the start. | 4934 // initializeMainWorld may have created a wrapper for the object, re
try from the start. |
| 4935 v8::Handle<v8::Object> wrapper = DOMDataStore::getWrapper<${v8ClassN
ame}>(impl.get(), isolate); | 4935 v8::Handle<v8::Object> wrapper = DOMDataStore::getWrapper<${v8ClassN
ame}>(impl.get(), isolate); |
| 4936 if (!wrapper.IsEmpty()) | 4936 if (!wrapper.IsEmpty()) |
| 4937 return wrapper; | 4937 return wrapper; |
| 4938 } | 4938 } |
| 4939 } | 4939 } |
| 4940 END | 4940 END |
| 4941 } | 4941 } |
| 4942 | 4942 |
| 4943 $code .= <<END; | 4943 $code .= <<END; |
| 4944 v8::Handle<v8::Object> wrapper = V8DOMWrapper::createWrapper(creationContext
, &info, toInternalPointer(impl.get()), isolate); | 4944 v8::Handle<v8::Object> wrapper = V8DOMWrapper::createWrapper(creationContext
, &wrapperTypeInfo, toInternalPointer(impl.get()), isolate); |
| 4945 if (UNLIKELY(wrapper.IsEmpty())) | 4945 if (UNLIKELY(wrapper.IsEmpty())) |
| 4946 return wrapper; | 4946 return wrapper; |
| 4947 | 4947 |
| 4948 END | 4948 END |
| 4949 if (IsTypedArrayType($interface->name)) { | 4949 if (IsTypedArrayType($interface->name)) { |
| 4950 AddToImplIncludes("bindings/v8/custom/V8ArrayBufferCustom.h"); | 4950 AddToImplIncludes("bindings/v8/custom/V8ArrayBufferCustom.h"); |
| 4951 $code .= <<END; | 4951 $code .= <<END; |
| 4952 impl->buffer()->setDeallocationObserver(V8ArrayBufferDeallocationObserver::i
nstance()); | 4952 impl->buffer()->setDeallocationObserver(V8ArrayBufferDeallocationObserver::i
nstance()); |
| 4953 END | 4953 END |
| 4954 } | 4954 } |
| 4955 | 4955 |
| 4956 if (InheritsInterface($interface, "AudioBuffer")) { | 4956 if (InheritsInterface($interface, "AudioBuffer")) { |
| 4957 AddToImplIncludes("modules/webaudio/AudioBuffer.h"); | 4957 AddToImplIncludes("modules/webaudio/AudioBuffer.h"); |
| 4958 $code .= <<END; | 4958 $code .= <<END; |
| 4959 for (unsigned i = 0, n = impl->numberOfChannels(); i < n; i++) { | 4959 for (unsigned i = 0, n = impl->numberOfChannels(); i < n; i++) { |
| 4960 Float32Array* channelData = impl->getChannelData(i); | 4960 Float32Array* channelData = impl->getChannelData(i); |
| 4961 channelData->buffer()->setDeallocationObserver(V8ArrayBufferDeallocation
Observer::instance()); | 4961 channelData->buffer()->setDeallocationObserver(V8ArrayBufferDeallocation
Observer::instance()); |
| 4962 } | 4962 } |
| 4963 END | 4963 END |
| 4964 } | 4964 } |
| 4965 | 4965 |
| 4966 | 4966 |
| 4967 $code .= <<END; | 4967 $code .= <<END; |
| 4968 installPerContextEnabledProperties(wrapper, impl.get(), isolate); | 4968 installPerContextEnabledProperties(wrapper, impl.get(), isolate); |
| 4969 V8DOMWrapper::associateObjectWithWrapper<$v8ClassName>(impl, &info, wrapper,
isolate, $wrapperConfiguration); | 4969 V8DOMWrapper::associateObjectWithWrapper<$v8ClassName>(impl, &wrapperTypeInf
o, wrapper, isolate, $wrapperConfiguration); |
| 4970 return wrapper; | 4970 return wrapper; |
| 4971 } | 4971 } |
| 4972 | 4972 |
| 4973 END | 4973 END |
| 4974 $implementation{nameSpaceWebCore}->add($code); | 4974 $implementation{nameSpaceWebCore}->add($code); |
| 4975 } | 4975 } |
| 4976 | 4976 |
| 4977 sub GenerateSecurityCheckFunctions | 4977 sub GenerateSecurityCheckFunctions |
| 4978 { | 4978 { |
| 4979 my $interface = shift; | 4979 my $interface = shift; |
| (...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5386 if ($arrayOrSequenceType) { | 5386 if ($arrayOrSequenceType) { |
| 5387 if (IsRefPtrType($arrayOrSequenceType)) { | 5387 if (IsRefPtrType($arrayOrSequenceType)) { |
| 5388 AddIncludesForType($arrayOrSequenceType); | 5388 AddIncludesForType($arrayOrSequenceType); |
| 5389 } else { | 5389 } else { |
| 5390 $code .= "v8::Handle<v8::FunctionTemplate>()"; | 5390 $code .= "v8::Handle<v8::FunctionTemplate>()"; |
| 5391 next; | 5391 next; |
| 5392 } | 5392 } |
| 5393 } else { | 5393 } else { |
| 5394 AddIncludesForType($type); | 5394 AddIncludesForType($type); |
| 5395 } | 5395 } |
| 5396 $code .= "V8PerIsolateData::from(isolate)->rawTemplate(&V8${type
}::info, currentWorldType)"; | 5396 $code .= "V8PerIsolateData::from(isolate)->rawTemplate(&V8${type
}::wrapperTypeInfo, currentWorldType)"; |
| 5397 } | 5397 } |
| 5398 } else { | 5398 } else { |
| 5399 $code .= "v8::Handle<v8::FunctionTemplate>()"; | 5399 $code .= "v8::Handle<v8::FunctionTemplate>()"; |
| 5400 } | 5400 } |
| 5401 } | 5401 } |
| 5402 $code .= " };\n"; | 5402 $code .= " };\n"; |
| 5403 $code .= " v8::Handle<v8::Signature> ${name}Signature = v8::Signature::Ne
w(desc, ${name}Argc, ${name}Argv);\n"; | 5403 $code .= " v8::Handle<v8::Signature> ${name}Signature = v8::Signature::Ne
w(desc, ${name}Argc, ${name}Argv);\n"; |
| 5404 return $code; | 5404 return $code; |
| 5405 } | 5405 } |
| 5406 | 5406 |
| (...skipping 789 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6196 my $interface = shift; | 6196 my $interface = shift; |
| 6197 | 6197 |
| 6198 return 1 if $interface->extendedAttributes->{"CustomToV8"}; | 6198 return 1 if $interface->extendedAttributes->{"CustomToV8"}; |
| 6199 return 1 if $interface->extendedAttributes->{"SpecialWrapFor"}; | 6199 return 1 if $interface->extendedAttributes->{"SpecialWrapFor"}; |
| 6200 return 1 if InheritsInterface($interface, "Document"); | 6200 return 1 if InheritsInterface($interface, "Document"); |
| 6201 | 6201 |
| 6202 return 0; | 6202 return 0; |
| 6203 } | 6203 } |
| 6204 | 6204 |
| 6205 1; | 6205 1; |
| OLD | NEW |