| 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 851 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 862 } | 862 } |
| 863 | 863 |
| 864 sub GenerateDomainSafeFunctionGetter | 864 sub GenerateDomainSafeFunctionGetter |
| 865 { | 865 { |
| 866 my $function = shift; | 866 my $function = shift; |
| 867 my $interfaceName = shift; | 867 my $interfaceName = shift; |
| 868 | 868 |
| 869 my $v8InterfaceName = "V8" . $interfaceName; | 869 my $v8InterfaceName = "V8" . $interfaceName; |
| 870 my $funcName = $function->signature->name; | 870 my $funcName = $function->signature->name; |
| 871 | 871 |
| 872 my ($numMandatoryParams, $parametersCheck) = GenerateFunctionParametersCheck
($function); |
| 872 my $signature = "v8::Signature::New(V8PerIsolateData::from(info.GetIsolate()
)->rawTemplate(&" . $v8InterfaceName . "::info, currentWorldType))"; | 873 my $signature = "v8::Signature::New(V8PerIsolateData::from(info.GetIsolate()
)->rawTemplate(&" . $v8InterfaceName . "::info, currentWorldType))"; |
| 873 if ($function->signature->extendedAttributes->{"DoNotCheckSignature"}) { | 874 if ($function->signature->extendedAttributes->{"DoNotCheckSignature"}) { |
| 874 $signature = "v8::Local<v8::Signature>()"; | 875 $signature = "v8::Local<v8::Signature>()"; |
| 875 } | 876 } |
| 876 | 877 |
| 877 my $newTemplateParams = "${interfaceName}V8Internal::${funcName}MethodCallba
ck, v8Undefined(), $signature"; | 878 my $newTemplateParams = "${interfaceName}V8Internal::${funcName}MethodCallba
ck, v8Undefined(), $signature"; |
| 878 | 879 |
| 879 AddToImplIncludes("Frame.h"); | 880 AddToImplIncludes("Frame.h"); |
| 880 AddToImplContentInternals(<<END); | 881 AddToImplContentInternals(<<END); |
| 881 static v8::Handle<v8::Value> ${funcName}AttrGetter(v8::Local<v8::String> name, c
onst v8::AccessorInfo& info) | 882 static v8::Handle<v8::Value> ${funcName}AttrGetter(v8::Local<v8::String> name, c
onst v8::AccessorInfo& info) |
| 882 { | 883 { |
| 883 // This is only for getting a unique pointer which we can pass to privateTem
plate. | 884 // This is only for getting a unique pointer which we can pass to privateTem
plate. |
| 884 static const char* privateTemplateUniqueKey = "${funcName}PrivateTemplate"; | 885 static const char* privateTemplateUniqueKey = "${funcName}PrivateTemplate"; |
| 885 WrapperWorldType currentWorldType = worldType(info.GetIsolate()); | 886 WrapperWorldType currentWorldType = worldType(info.GetIsolate()); |
| 886 V8PerIsolateData* data = V8PerIsolateData::from(info.GetIsolate()); | 887 V8PerIsolateData* data = V8PerIsolateData::from(info.GetIsolate()); |
| 887 v8::Persistent<v8::FunctionTemplate> privateTemplate = data->privateTemplate
(currentWorldType, &privateTemplateUniqueKey, $newTemplateParams); | 888 v8::Persistent<v8::FunctionTemplate> privateTemplate = data->privateTemplate
(currentWorldType, &privateTemplateUniqueKey, $newTemplateParams, $numMandatoryP
arams); |
| 888 | 889 |
| 889 v8::Handle<v8::Object> holder = info.This()->FindInstanceInPrototypeChain(${
v8InterfaceName}::GetTemplate(info.GetIsolate(), currentWorldType)); | 890 v8::Handle<v8::Object> holder = info.This()->FindInstanceInPrototypeChain(${
v8InterfaceName}::GetTemplate(info.GetIsolate(), currentWorldType)); |
| 890 if (holder.IsEmpty()) { | 891 if (holder.IsEmpty()) { |
| 891 // can only reach here by 'object.__proto__.func', and it should passed | 892 // can only reach here by 'object.__proto__.func', and it should passed |
| 892 // domain security check already | 893 // domain security check already |
| 893 return privateTemplate->GetFunction(); | 894 return privateTemplate->GetFunction(); |
| 894 } | 895 } |
| 895 ${interfaceName}* imp = ${v8InterfaceName}::toNative(holder); | 896 ${interfaceName}* imp = ${v8InterfaceName}::toNative(holder); |
| 896 if (!BindingSecurity::shouldAllowAccessToFrame(BindingState::instance(), imp
->frame(), DoNotReportSecurityError)) { | 897 if (!BindingSecurity::shouldAllowAccessToFrame(BindingState::instance(), imp
->frame(), DoNotReportSecurityError)) { |
| 897 static const char* sharedTemplateUniqueKey = "${funcName}SharedTemplate"
; | 898 static const char* sharedTemplateUniqueKey = "${funcName}SharedTemplate"
; |
| 898 v8::Persistent<v8::FunctionTemplate> sharedTemplate = data->privateTempl
ate(currentWorldType, &sharedTemplateUniqueKey, $newTemplateParams); | 899 v8::Persistent<v8::FunctionTemplate> sharedTemplate = data->privateTempl
ate(currentWorldType, &sharedTemplateUniqueKey, $newTemplateParams, $numMandator
yParams); |
| 899 return sharedTemplate->GetFunction(); | 900 return sharedTemplate->GetFunction(); |
| 900 } | 901 } |
| 901 | 902 |
| 902 v8::Local<v8::Value> hiddenValue = info.This()->GetHiddenValue(name); | 903 v8::Local<v8::Value> hiddenValue = info.This()->GetHiddenValue(name); |
| 903 if (!hiddenValue.IsEmpty()) | 904 if (!hiddenValue.IsEmpty()) |
| 904 return hiddenValue; | 905 return hiddenValue; |
| 905 | 906 |
| 906 return privateTemplate->GetFunction(); | 907 return privateTemplate->GetFunction(); |
| 907 } | 908 } |
| 908 | 909 |
| (...skipping 1856 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2765 if ($property_attributes eq "v8::DontDelete") { | 2766 if ($property_attributes eq "v8::DontDelete") { |
| 2766 $property_attributes = ""; | 2767 $property_attributes = ""; |
| 2767 } else { | 2768 } else { |
| 2768 $property_attributes = ", static_cast<v8::PropertyAttribute>($property_a
ttributes)"; | 2769 $property_attributes = ", static_cast<v8::PropertyAttribute>($property_a
ttributes)"; |
| 2769 } | 2770 } |
| 2770 | 2771 |
| 2771 if ($template eq "proto" && $conditional eq "" && $signature eq "defaultSign
ature" && $property_attributes eq "") { | 2772 if ($template eq "proto" && $conditional eq "" && $signature eq "defaultSign
ature" && $property_attributes eq "") { |
| 2772 die "This shouldn't happen: Intraface '$interfaceName' $commentInfo\n"; | 2773 die "This shouldn't happen: Intraface '$interfaceName' $commentInfo\n"; |
| 2773 } | 2774 } |
| 2774 | 2775 |
| 2776 my ($numMandatoryParams, $parametersCheck) = GenerateFunctionParametersCheck
($function); |
| 2777 |
| 2775 my $conditionalString = $codeGenerator->GenerateConditionalString($function-
>signature); | 2778 my $conditionalString = $codeGenerator->GenerateConditionalString($function-
>signature); |
| 2776 $code .= "#if ${conditionalString}\n" if $conditionalString; | 2779 $code .= "#if ${conditionalString}\n" if $conditionalString; |
| 2777 if ($function->signature->extendedAttributes->{"PerWorldBindings"}) { | 2780 if ($function->signature->extendedAttributes->{"PerWorldBindings"}) { |
| 2778 $code .= " if (currentWorldType == MainWorld) {\n"; | 2781 $code .= " if (currentWorldType == MainWorld) {\n"; |
| 2779 $code .= " ${conditional}$template->Set(v8::String::NewSymbol(\"$
name\"), v8::FunctionTemplate::New(${interfaceName}V8Internal::${name}MethodCall
backForMainWorld, v8Undefined(), ${signature})$property_attributes);\n"; | 2782 $code .= " ${conditional}$template->Set(v8::String::NewSymbol(\"$
name\"), v8::FunctionTemplate::New(${interfaceName}V8Internal::${name}MethodCall
backForMainWorld, v8Undefined(), ${signature}, $numMandatoryParams)$property_att
ributes);\n"; |
| 2780 $code .= " } else {\n"; | 2783 $code .= " } else {\n"; |
| 2781 $code .= " ${conditional}$template->Set(v8::String::NewSymbol(\"$
name\"), v8::FunctionTemplate::New(${interfaceName}V8Internal::${name}MethodCall
back, v8Undefined(), ${signature})$property_attributes);\n"; | 2784 $code .= " ${conditional}$template->Set(v8::String::NewSymbol(\"$
name\"), v8::FunctionTemplate::New(${interfaceName}V8Internal::${name}MethodCall
back, v8Undefined(), ${signature}, $numMandatoryParams)$property_attributes);\n"
; |
| 2782 $code .= " }\n"; | 2785 $code .= " }\n"; |
| 2783 } else { | 2786 } else { |
| 2784 $code .= " ${conditional}$template->Set(v8::String::NewSymbol(\"$name
\"), v8::FunctionTemplate::New(${interfaceName}V8Internal::${name}MethodCallback
, v8Undefined(), ${signature})$property_attributes);\n"; | 2787 $code .= " ${conditional}$template->Set(v8::String::NewSymbol(\"$name
\"), v8::FunctionTemplate::New(${interfaceName}V8Internal::${name}MethodCallback
, v8Undefined(), ${signature}, $numMandatoryParams)$property_attributes);\n"; |
| 2785 } | 2788 } |
| 2786 $code .= "#endif // ${conditionalString}\n" if $conditionalString; | 2789 $code .= "#endif // ${conditionalString}\n" if $conditionalString; |
| 2787 return $code; | 2790 return $code; |
| 2788 } | 2791 } |
| 2789 | 2792 |
| 2790 sub GenerateImplementationIndexedProperty | 2793 sub GenerateImplementationIndexedProperty |
| 2791 { | 2794 { |
| 2792 my $interface = shift; | 2795 my $interface = shift; |
| 2793 my $indexer = shift; | 2796 my $indexer = shift; |
| 2794 my $interfaceName = $interface->name; | 2797 my $interfaceName = $interface->name; |
| (...skipping 839 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3634 # Setup the enable-by-settings functions if we have them | 3637 # Setup the enable-by-settings functions if we have them |
| 3635 $code .= <<END; | 3638 $code .= <<END; |
| 3636 v8::Local<v8::Signature> defaultSignature = v8::Signature::New(GetTemplate(i
solate, worldType(isolate))); | 3639 v8::Local<v8::Signature> defaultSignature = v8::Signature::New(GetTemplate(i
solate, worldType(isolate))); |
| 3637 UNUSED_PARAM(defaultSignature); // In some cases, it will not be used. | 3640 UNUSED_PARAM(defaultSignature); // In some cases, it will not be used. |
| 3638 | 3641 |
| 3639 ScriptExecutionContext* context = toScriptExecutionContext(proto->CreationCo
ntext()); | 3642 ScriptExecutionContext* context = toScriptExecutionContext(proto->CreationCo
ntext()); |
| 3640 END | 3643 END |
| 3641 | 3644 |
| 3642 foreach my $runtimeFunc (@enabledPerContextFunctions) { | 3645 foreach my $runtimeFunc (@enabledPerContextFunctions) { |
| 3643 my $enableFunction = GetContextEnableFunction($runtimeFunc->signatur
e); | 3646 my $enableFunction = GetContextEnableFunction($runtimeFunc->signatur
e); |
| 3647 my ($numMandatoryParams, $parametersCheck) = GenerateFunctionParamet
ersCheck($runtimeFunc); |
| 3644 my $conditionalString = $codeGenerator->GenerateConditionalString($r
untimeFunc->signature); | 3648 my $conditionalString = $codeGenerator->GenerateConditionalString($r
untimeFunc->signature); |
| 3645 $code .= "\n#if ${conditionalString}\n" if $conditionalString; | 3649 $code .= "\n#if ${conditionalString}\n" if $conditionalString; |
| 3646 $code .= " if (context && context->isDocument() && ${enableFuncti
on}(toDocument(context))) {\n"; | 3650 $code .= " if (context && context->isDocument() && ${enableFuncti
on}(toDocument(context))) {\n"; |
| 3647 my $name = $runtimeFunc->signature->name; | 3651 my $name = $runtimeFunc->signature->name; |
| 3648 $code .= <<END; | 3652 $code .= <<END; |
| 3649 proto->Set(v8::String::NewSymbol("${name}"), v8::FunctionTemplate::New($
{interfaceName}V8Internal::${name}MethodCallback, v8Undefined(), defaultSignatur
e)->GetFunction()); | 3653 proto->Set(v8::String::NewSymbol("${name}"), v8::FunctionTemplate::New($
{interfaceName}V8Internal::${name}MethodCallback, v8Undefined(), defaultSignatur
e, $numMandatoryParams)->GetFunction()); |
| 3650 END | 3654 END |
| 3651 $code .= " }\n"; | 3655 $code .= " }\n"; |
| 3652 $code .= "#endif // ${conditionalString}\n" if $conditionalString; | 3656 $code .= "#endif // ${conditionalString}\n" if $conditionalString; |
| 3653 } | 3657 } |
| 3654 | 3658 |
| 3655 $code .= <<END; | 3659 $code .= <<END; |
| 3656 } | 3660 } |
| 3657 | 3661 |
| 3658 END | 3662 END |
| 3659 AddToImplContent($code); | 3663 AddToImplContent($code); |
| (...skipping 1201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4861 | 4865 |
| 4862 sub GetPassRefPtrType | 4866 sub GetPassRefPtrType |
| 4863 { | 4867 { |
| 4864 my $v8InterfaceName = shift; | 4868 my $v8InterfaceName = shift; |
| 4865 | 4869 |
| 4866 my $angleBracketSpace = $v8InterfaceName =~ />$/ ? " " : ""; | 4870 my $angleBracketSpace = $v8InterfaceName =~ />$/ ? " " : ""; |
| 4867 return "PassRefPtr<${v8InterfaceName}${angleBracketSpace}>"; | 4871 return "PassRefPtr<${v8InterfaceName}${angleBracketSpace}>"; |
| 4868 } | 4872 } |
| 4869 | 4873 |
| 4870 1; | 4874 1; |
| OLD | NEW |