| 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 2683 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2694 } | 2694 } |
| 2695 return ($parameterCheckString, $paramIndex, %replacements); | 2695 return ($parameterCheckString, $paramIndex, %replacements); |
| 2696 } | 2696 } |
| 2697 | 2697 |
| 2698 sub GenerateOverloadedConstructorCallback | 2698 sub GenerateOverloadedConstructorCallback |
| 2699 { | 2699 { |
| 2700 my $interface = shift; | 2700 my $interface = shift; |
| 2701 my $interfaceName = $interface->name; | 2701 my $interfaceName = $interface->name; |
| 2702 my $implClassName = GetImplName($interface); | 2702 my $implClassName = GetImplName($interface); |
| 2703 | 2703 |
| 2704 my $hasExceptionState = 0; | 2704 my $code .= <<END; |
| 2705 my $header = ""; | |
| 2706 $header .= <<END; | |
| 2707 static void constructor(const v8::FunctionCallbackInfo<v8::Value>& info) | 2705 static void constructor(const v8::FunctionCallbackInfo<v8::Value>& info) |
| 2708 { | 2706 { |
| 2709 END | 2707 END |
| 2710 my $code = ""; | |
| 2711 my $leastNumMandatoryParams = 255; | 2708 my $leastNumMandatoryParams = 255; |
| 2712 foreach my $constructor (@{$interface->constructors}) { | 2709 foreach my $constructor (@{$interface->constructors}) { |
| 2713 my $name = "constructor" . $constructor->overloadedIndex; | 2710 my $name = "constructor" . $constructor->overloadedIndex; |
| 2714 my ($numMandatoryParams, $parametersCheck) = GenerateFunctionParametersC
heck($constructor); | 2711 my ($numMandatoryParams, $parametersCheck) = GenerateFunctionParametersC
heck($constructor); |
| 2715 $leastNumMandatoryParams = $numMandatoryParams if ($numMandatoryParams <
$leastNumMandatoryParams); | 2712 $leastNumMandatoryParams = $numMandatoryParams if ($numMandatoryParams <
$leastNumMandatoryParams); |
| 2716 $code .= " if ($parametersCheck) {\n"; | 2713 $code .= " if ($parametersCheck) {\n"; |
| 2717 $code .= " ${implClassName}V8Internal::${name}(info);\n"; | 2714 $code .= " ${implClassName}V8Internal::${name}(info);\n"; |
| 2718 $code .= " return;\n"; | 2715 $code .= " return;\n"; |
| 2719 $code .= " }\n"; | 2716 $code .= " }\n"; |
| 2720 } | 2717 } |
| 2718 AddToImplIncludes("bindings/v8/ExceptionMessages.h"); # FIXME: remove when
rebase (after https://codereview.chromium.org/110423004/ lands) |
| 2721 if ($leastNumMandatoryParams >= 1) { | 2719 if ($leastNumMandatoryParams >= 1) { |
| 2722 if (!$hasExceptionState) { | 2720 $code .= <<END; |
| 2723 AddToImplIncludes("bindings/v8/ExceptionMessages.h"); | 2721 ExceptionState exceptionState(ExceptionState::ConstructionContext, \"${inter
faceName}\", info.Holder(), info.GetIsolate()); |
| 2724 $header .= " ExceptionState exceptionState(ExceptionState::Constr
uctionContext, \"${interfaceName}\", info.Holder(), info.GetIsolate());\n"; | 2722 if (UNLIKELY(info.Length() < $leastNumMandatoryParams)) { |
| 2725 $hasExceptionState = 1; | 2723 exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments($lea
stNumMandatoryParams, info.Length())); |
| 2726 } | 2724 exceptionState.throwIfNeeded(); |
| 2727 $code .= " if (UNLIKELY(info.Length() < $leastNumMandatoryParams)) {\
n"; | 2725 return; |
| 2728 $code .= " exceptionState.throwTypeError(ExceptionMessages::notEn
oughArguments($leastNumMandatoryParams, info.Length()));\n"; | |
| 2729 $code .= " exceptionState.throwIfNeeded();\n"; | |
| 2730 $code .= " return;\n"; | |
| 2731 $code .= " }\n"; | |
| 2732 } | 2726 } |
| 2733 if ($hasExceptionState) { | |
| 2734 $code .= <<END; | |
| 2735 exceptionState.throwTypeError(\"No matching constructor signature.\"); | 2727 exceptionState.throwTypeError(\"No matching constructor signature.\"); |
| 2736 exceptionState.throwIfNeeded(); | 2728 exceptionState.throwIfNeeded(); |
| 2737 END | 2729 END |
| 2738 } else { | 2730 } else { |
| 2739 AddToImplIncludes("bindings/v8/ExceptionMessages.h"); | |
| 2740 $code .= <<END; | 2731 $code .= <<END; |
| 2741 throwTypeError(ExceptionMessages::failedToConstruct(\"${interfaceName}\", \"
No matching constructor signature.\"), info.GetIsolate()); | 2732 throwTypeError(ExceptionMessages::failedToConstruct(\"${interfaceName}\", \"
No matching constructor signature.\"), info.GetIsolate()); |
| 2742 END | 2733 END |
| 2743 } | 2734 } |
| 2744 $code .= "}\n\n"; | 2735 $code .= "}\n\n"; |
| 2745 $implementation{nameSpaceInternal}->add($header . $code); | 2736 $implementation{nameSpaceInternal}->add($code); |
| 2746 } | 2737 } |
| 2747 | 2738 |
| 2748 sub GenerateSingleConstructorCallback | 2739 sub GenerateSingleConstructorCallback |
| 2749 { | 2740 { |
| 2750 my $interface = shift; | 2741 my $interface = shift; |
| 2751 my $function = shift; | 2742 my $function = shift; |
| 2752 | 2743 |
| 2753 my $interfaceName = $interface->name; | 2744 my $interfaceName = $interface->name; |
| 2754 my $implClassName = GetImplName($interface); | 2745 my $implClassName = GetImplName($interface); |
| 2755 my $v8ClassName = GetV8ClassName($interface); | 2746 my $v8ClassName = GetV8ClassName($interface); |
| (...skipping 3595 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6351 | 6342 |
| 6352 return 1 if ExtendedAttributeContains($interface->extendedAttributes->{"Cust
om"}, "ToV8"); | 6343 return 1 if ExtendedAttributeContains($interface->extendedAttributes->{"Cust
om"}, "ToV8"); |
| 6353 return 1 if ExtendedAttributeContains($interface->extendedAttributes->{"Cust
om"}, "Wrap"); | 6344 return 1 if ExtendedAttributeContains($interface->extendedAttributes->{"Cust
om"}, "Wrap"); |
| 6354 return 1 if $interface->extendedAttributes->{"SpecialWrapFor"}; | 6345 return 1 if $interface->extendedAttributes->{"SpecialWrapFor"}; |
| 6355 return 1 if InheritsInterface($interface, "Document"); | 6346 return 1 if InheritsInterface($interface, "Document"); |
| 6356 | 6347 |
| 6357 return 0; | 6348 return 0; |
| 6358 } | 6349 } |
| 6359 | 6350 |
| 6360 1; | 6351 1; |
| OLD | NEW |