| 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 2121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2132 | 2132 |
| 2133 if ($raisesExceptions) { | 2133 if ($raisesExceptions) { |
| 2134 push(@implContentInternals, " fail:\n"); | 2134 push(@implContentInternals, " fail:\n"); |
| 2135 push(@implContentInternals, " return setDOMException(ec, args.GetIsol
ate());\n"); | 2135 push(@implContentInternals, " return setDOMException(ec, args.GetIsol
ate());\n"); |
| 2136 } | 2136 } |
| 2137 | 2137 |
| 2138 push(@implContentInternals, "}\n"); | 2138 push(@implContentInternals, "}\n"); |
| 2139 push(@implContentInternals, "\n"); | 2139 push(@implContentInternals, "\n"); |
| 2140 } | 2140 } |
| 2141 | 2141 |
| 2142 # The Web IDL specification states that Interface objects for interfaces MUST ha
ve a property named |
| 2143 # "length" that returns the length of the shortest argument list of the entries
in the effective |
| 2144 # overload set for constructors. In other words, use the lowest number of mandat
ory arguments among |
| 2145 # all constructors. |
| 2146 sub GetInterfaceLength |
| 2147 { |
| 2148 my $interface = shift; |
| 2149 |
| 2150 my $leastNumMandatoryParams = 0; |
| 2151 if ($codeGenerator->IsConstructorTemplate($interface, "Event") || $codeGener
ator->IsConstructorTemplate($interface, "TypedArray")) { |
| 2152 $leastNumMandatoryParams = 1; |
| 2153 } elsif ($interface->extendedAttributes->{"Constructor"} || $interface->exte
ndedAttributes->{"CustomConstructor"}) { |
| 2154 my @constructors = @{$interface->constructors}; |
| 2155 my @customConstructors = @{$interface->customConstructors}; |
| 2156 $leastNumMandatoryParams = 255; |
| 2157 foreach my $constructor (@constructors, @customConstructors) { |
| 2158 my ($numMandatoryParams, $parametersCheck) = GenerateFunctionParamet
ersCheck($constructor); |
| 2159 $leastNumMandatoryParams = $numMandatoryParams if ($numMandatoryPara
ms < $leastNumMandatoryParams); |
| 2160 } |
| 2161 } |
| 2162 |
| 2163 return $leastNumMandatoryParams; |
| 2164 } |
| 2165 |
| 2142 sub GenerateConstructorCallback | 2166 sub GenerateConstructorCallback |
| 2143 { | 2167 { |
| 2144 my $interface = shift; | 2168 my $interface = shift; |
| 2145 | 2169 |
| 2146 my $interfaceName = $interface->name; | 2170 my $interfaceName = $interface->name; |
| 2147 push(@implContent, "v8::Handle<v8::Value> V8${interfaceName}::constructorCal
lback(const v8::Arguments& args)\n"); | 2171 push(@implContent, "v8::Handle<v8::Value> V8${interfaceName}::constructorCal
lback(const v8::Arguments& args)\n"); |
| 2148 push(@implContent, "{\n"); | 2172 push(@implContent, "{\n"); |
| 2149 push(@implContent, GenerateFeatureObservation($interface->extendedAttributes
->{"MeasureAs"})); | 2173 push(@implContent, GenerateFeatureObservation($interface->extendedAttributes
->{"MeasureAs"})); |
| 2150 push(@implContent, GenerateConstructorHeader()); | 2174 push(@implContent, GenerateConstructorHeader()); |
| 2151 if (HasCustomConstructor($interface)) { | 2175 if (HasCustomConstructor($interface)) { |
| (...skipping 889 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3041 next if !IsStandardFunction($interface, $function); | 3065 next if !IsStandardFunction($interface, $function); |
| 3042 if (!$has_callbacks) { | 3066 if (!$has_callbacks) { |
| 3043 $has_callbacks = 1; | 3067 $has_callbacks = 1; |
| 3044 push(@implContent, "static const V8DOMConfiguration::BatchedMethod $
{v8InterfaceName}Methods[] = {\n"); | 3068 push(@implContent, "static const V8DOMConfiguration::BatchedMethod $
{v8InterfaceName}Methods[] = {\n"); |
| 3045 } | 3069 } |
| 3046 my $name = $function->signature->name; | 3070 my $name = $function->signature->name; |
| 3047 my $methodForMainWorld = "0"; | 3071 my $methodForMainWorld = "0"; |
| 3048 if ($function->signature->extendedAttributes->{"PerWorldBindings"}) { | 3072 if ($function->signature->extendedAttributes->{"PerWorldBindings"}) { |
| 3049 $methodForMainWorld = "${interfaceName}V8Internal::${name}MethodCall
backForMainWorld"; | 3073 $methodForMainWorld = "${interfaceName}V8Internal::${name}MethodCall
backForMainWorld"; |
| 3050 } | 3074 } |
| 3075 # numMandatoryParams is used to set the "length" property of the Functio
n object. |
| 3076 my ($numMandatoryParams, $parametersCheck) = GenerateFunctionParametersC
heck($function); |
| 3051 my $conditionalString = $codeGenerator->GenerateConditionalString($funct
ion->signature); | 3077 my $conditionalString = $codeGenerator->GenerateConditionalString($funct
ion->signature); |
| 3052 push(@implContent, "#if ${conditionalString}\n") if $conditionalString; | 3078 push(@implContent, "#if ${conditionalString}\n") if $conditionalString; |
| 3053 push(@implContent, <<END); | 3079 push(@implContent, <<END); |
| 3054 {"$name", ${interfaceName}V8Internal::${name}MethodCallback, ${methodForMain
World}}, | 3080 {"$name", ${interfaceName}V8Internal::${name}MethodCallback, ${methodForMain
World}, ${numMandatoryParams}}, |
| 3055 END | 3081 END |
| 3056 push(@implContent, "#endif\n") if $conditionalString; | 3082 push(@implContent, "#endif\n") if $conditionalString; |
| 3057 $num_callbacks++; | 3083 $num_callbacks++; |
| 3058 } | 3084 } |
| 3059 push(@implContent, "};\n\n") if $has_callbacks; | 3085 push(@implContent, "};\n\n") if $has_callbacks; |
| 3060 | 3086 |
| 3061 # Setup constants | 3087 # Setup constants |
| 3062 my $has_constants = 0; | 3088 my $has_constants = 0; |
| 3063 my @constantsEnabledAtRuntime; | 3089 my @constantsEnabledAtRuntime; |
| 3064 if (@{$interface->constants}) { | 3090 if (@{$interface->constants}) { |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3179 END | 3205 END |
| 3180 } | 3206 } |
| 3181 | 3207 |
| 3182 AddToImplIncludes("wtf/UnusedParam.h"); | 3208 AddToImplIncludes("wtf/UnusedParam.h"); |
| 3183 push(@implContent, <<END); | 3209 push(@implContent, <<END); |
| 3184 UNUSED_PARAM(defaultSignature); // In some cases, it will not be used. | 3210 UNUSED_PARAM(defaultSignature); // In some cases, it will not be used. |
| 3185 END | 3211 END |
| 3186 | 3212 |
| 3187 if (IsConstructable($interface)) { | 3213 if (IsConstructable($interface)) { |
| 3188 push(@implContent, " desc->SetCallHandler(${v8InterfaceName}::constru
ctorCallback);\n"); | 3214 push(@implContent, " desc->SetCallHandler(${v8InterfaceName}::constru
ctorCallback);\n"); |
| 3215 my $interfaceLength = GetInterfaceLength($interface); |
| 3216 push(@implContent, " desc->SetLength(${interfaceLength});\n"); |
| 3189 } | 3217 } |
| 3190 | 3218 |
| 3191 if ($access_check or @enabledAtRuntimeAttributes or @normalFunctions or $has
_constants) { | 3219 if ($access_check or @enabledAtRuntimeAttributes or @normalFunctions or $has
_constants) { |
| 3192 push(@implContent, <<END); | 3220 push(@implContent, <<END); |
| 3193 v8::Local<v8::ObjectTemplate> instance = desc->InstanceTemplate(); | 3221 v8::Local<v8::ObjectTemplate> instance = desc->InstanceTemplate(); |
| 3194 v8::Local<v8::ObjectTemplate> proto = desc->PrototypeTemplate(); | 3222 v8::Local<v8::ObjectTemplate> proto = desc->PrototypeTemplate(); |
| 3195 UNUSED_PARAM(instance); // In some cases, it will not be used. | 3223 UNUSED_PARAM(instance); // In some cases, it will not be used. |
| 3196 UNUSED_PARAM(proto); // In some cases, it will not be used. | 3224 UNUSED_PARAM(proto); // In some cases, it will not be used. |
| 3197 END | 3225 END |
| 3198 } | 3226 } |
| (...skipping 1389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4588 | 4616 |
| 4589 sub GetPassRefPtrType | 4617 sub GetPassRefPtrType |
| 4590 { | 4618 { |
| 4591 my $v8InterfaceName = shift; | 4619 my $v8InterfaceName = shift; |
| 4592 | 4620 |
| 4593 my $angleBracketSpace = $v8InterfaceName =~ />$/ ? " " : ""; | 4621 my $angleBracketSpace = $v8InterfaceName =~ />$/ ? " " : ""; |
| 4594 return "PassRefPtr<${v8InterfaceName}${angleBracketSpace}>"; | 4622 return "PassRefPtr<${v8InterfaceName}${angleBracketSpace}>"; |
| 4595 } | 4623 } |
| 4596 | 4624 |
| 4597 1; | 4625 1; |
| OLD | NEW |