| 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 2539 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2550 $parameterCheckString .= <<END; | 2550 $parameterCheckString .= <<END; |
| 2551 return; | 2551 return; |
| 2552 } | 2552 } |
| 2553 END | 2553 END |
| 2554 } | 2554 } |
| 2555 | 2555 |
| 2556 my $parameterName = $parameter->name; | 2556 my $parameterName = $parameter->name; |
| 2557 AddToImplIncludes("bindings/v8/ExceptionMessages.h"); | 2557 AddToImplIncludes("bindings/v8/ExceptionMessages.h"); |
| 2558 AddToImplIncludes("bindings/v8/ExceptionState.h"); | 2558 AddToImplIncludes("bindings/v8/ExceptionState.h"); |
| 2559 if (IsCallbackInterface($parameter->type)) { | 2559 if (IsCallbackInterface($parameter->type)) { |
| 2560 my $ptrType = IsLegacyRefCountedCallback($parameter->type) ? "Ref" :
"Own"; |
| 2560 my $v8ClassName = "V8" . $parameter->type; | 2561 my $v8ClassName = "V8" . $parameter->type; |
| 2561 AddToImplIncludes("$v8ClassName.h"); | 2562 AddToImplIncludes("$v8ClassName.h"); |
| 2562 if ($parameter->isOptional) { | 2563 if ($parameter->isOptional) { |
| 2563 $parameterCheckString .= " RefPtr<" . $parameter->type . "> $
parameterName;\n"; | 2564 $parameterCheckString .= " ${ptrType}Ptr<" . $parameter->type
. "> $parameterName;\n"; |
| 2564 $parameterCheckString .= " if (info.Length() > $paramIndex &&
!info[$paramIndex]->IsNull() && !info[$paramIndex]->IsUndefined()) {\n"; | 2565 $parameterCheckString .= " if (info.Length() > $paramIndex &&
!info[$paramIndex]->IsNull() && !info[$paramIndex]->IsUndefined()) {\n"; |
| 2565 $parameterCheckString .= " if (!info[$paramIndex]->IsFunc
tion()) {\n"; | 2566 $parameterCheckString .= " if (!info[$paramIndex]->IsFunc
tion()) {\n"; |
| 2566 $parameterCheckString .= " throwTypeError(ExceptionMe
ssages::failedToExecute(\"$functionName\", \"$interfaceName\", \"The callback pr
ovided as parameter $humanFriendlyIndex is not a function.\"), info.GetIsolate()
);\n"; | 2567 $parameterCheckString .= " throwTypeError(ExceptionMe
ssages::failedToExecute(\"$functionName\", \"$interfaceName\", \"The callback pr
ovided as parameter $humanFriendlyIndex is not a function.\"), info.GetIsolate()
);\n"; |
| 2567 $parameterCheckString .= " return;\n"; | 2568 $parameterCheckString .= " return;\n"; |
| 2568 $parameterCheckString .= " }\n"; | 2569 $parameterCheckString .= " }\n"; |
| 2569 $parameterCheckString .= " $parameterName = ${v8ClassName
}::create(info[$paramIndex], getExecutionContext());\n"; | 2570 $parameterCheckString .= " $parameterName = ${v8ClassName
}::create(info[$paramIndex], getExecutionContext());\n"; |
| 2570 $parameterCheckString .= " }\n"; | 2571 $parameterCheckString .= " }\n"; |
| 2571 } else { | 2572 } else { |
| 2572 $parameterCheckString .= " if (info.Length() <= $paramIndex |
| "; | 2573 $parameterCheckString .= " if (info.Length() <= $paramIndex |
| "; |
| 2573 if ($parameter->isNullable) { | 2574 if ($parameter->isNullable) { |
| 2574 $parameterCheckString .= "!(info[$paramIndex]->IsFunction()
|| info[$paramIndex]->IsNull())"; | 2575 $parameterCheckString .= "!(info[$paramIndex]->IsFunction()
|| info[$paramIndex]->IsNull())"; |
| 2575 } else { | 2576 } else { |
| 2576 $parameterCheckString .= "!info[$paramIndex]->IsFunction()"; | 2577 $parameterCheckString .= "!info[$paramIndex]->IsFunction()"; |
| 2577 } | 2578 } |
| 2578 $parameterCheckString .= ") {\n"; | 2579 $parameterCheckString .= ") {\n"; |
| 2579 $parameterCheckString .= " throwTypeError(ExceptionMessag
es::failedToExecute(\"$functionName\", \"$interfaceName\", \"The callback provid
ed as parameter $humanFriendlyIndex is not a function.\"), info.GetIsolate());\n
"; | 2580 $parameterCheckString .= " throwTypeError(ExceptionMessag
es::failedToExecute(\"$functionName\", \"$interfaceName\", \"The callback provid
ed as parameter $humanFriendlyIndex is not a function.\"), info.GetIsolate());\n
"; |
| 2580 $parameterCheckString .= " return;\n"; | 2581 $parameterCheckString .= " return;\n"; |
| 2581 $parameterCheckString .= " }\n"; | 2582 $parameterCheckString .= " }\n"; |
| 2582 $parameterCheckString .= " RefPtr<" . $parameter->type . "> $
parameterName = "; | 2583 $parameterCheckString .= " ${ptrType}Ptr<" . $parameter->type
. "> $parameterName = "; |
| 2583 $parameterCheckString .= "info[$paramIndex]->IsNull() ? 0 : " if
$parameter->isNullable; | 2584 $parameterCheckString .= "info[$paramIndex]->IsNull() ? nullptr
: " if $parameter->isNullable; |
| 2584 $parameterCheckString .= "${v8ClassName}::create(info[$paramInde
x], getExecutionContext());\n"; | 2585 $parameterCheckString .= "${v8ClassName}::create(info[$paramInde
x], getExecutionContext());\n"; |
| 2585 } | 2586 } |
| 2586 } elsif ($parameter->extendedAttributes->{"Clamp"}) { | 2587 } elsif ($parameter->extendedAttributes->{"Clamp"}) { |
| 2587 my $nativeValue = "${parameterName}NativeValue"; | 2588 my $nativeValue = "${parameterName}NativeValue"; |
| 2588 my $idlType = $parameter->type; | 2589 my $idlType = $parameter->type; |
| 2589 $parameterCheckString .= " $nativeType $parameterName = 0;\n"
; | 2590 $parameterCheckString .= " $nativeType $parameterName = 0;\n"
; |
| 2590 $parameterCheckString .= " V8TRYCATCH_VOID(double, $nativeVal
ue, info[$paramIndex]->NumberValue());\n"; | 2591 $parameterCheckString .= " V8TRYCATCH_VOID(double, $nativeVal
ue, info[$paramIndex]->NumberValue());\n"; |
| 2591 $parameterCheckString .= " if (!std::isnan($nativeValue))\n"; | 2592 $parameterCheckString .= " if (!std::isnan($nativeValue))\n"; |
| 2592 $parameterCheckString .= " $parameterName = clampTo<$idlT
ype>($nativeValue);\n"; | 2593 $parameterCheckString .= " $parameterName = clampTo<$idlT
ype>($nativeValue);\n"; |
| 2593 } elsif ($parameter->type eq "SerializedScriptValue") { | 2594 } elsif ($parameter->type eq "SerializedScriptValue") { |
| (...skipping 2181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4775 } | 4776 } |
| 4776 | 4777 |
| 4777 sub GenerateCallbackHeader | 4778 sub GenerateCallbackHeader |
| 4778 { | 4779 { |
| 4779 my $object = shift; | 4780 my $object = shift; |
| 4780 my $interface = shift; | 4781 my $interface = shift; |
| 4781 | 4782 |
| 4782 my $interfaceName = $interface->name; | 4783 my $interfaceName = $interface->name; |
| 4783 my $implClassName = GetImplName($interface); | 4784 my $implClassName = GetImplName($interface); |
| 4784 my $v8ClassName = GetV8ClassName($interface); | 4785 my $v8ClassName = GetV8ClassName($interface); |
| 4786 my $refCounted = IsLegacyRefCountedCallback($interfaceName); |
| 4787 my $ptrType = $refCounted ? "Ref" : "Own"; |
| 4788 my $adoptType = $refCounted ? "Ref" : "Ptr"; |
| 4785 | 4789 |
| 4786 my @includes = (); | 4790 my @includes = (); |
| 4787 push(@includes, "bindings/v8/ActiveDOMCallback.h"); | 4791 push(@includes, "bindings/v8/ActiveDOMCallback.h"); |
| 4788 push(@includes, "bindings/v8/DOMWrapperWorld.h"); | 4792 push(@includes, "bindings/v8/DOMWrapperWorld.h"); |
| 4789 push(@includes, "bindings/v8/ScopedPersistent.h"); | 4793 push(@includes, "bindings/v8/ScopedPersistent.h"); |
| 4790 push(@includes, HeaderFilesForInterface($interfaceName, $implClassName)); | 4794 push(@includes, HeaderFilesForInterface($interfaceName, $implClassName)); |
| 4791 for my $include (sort @includes) { | 4795 for my $include (sort @includes) { |
| 4792 $header{includes}->add("#include \"$include\"\n"); | 4796 $header{includes}->add("#include \"$include\"\n"); |
| 4793 } | 4797 } |
| 4794 $header{nameSpaceWebCore}->addHeader("\nclass ExecutionContext;\n"); | 4798 $header{nameSpaceWebCore}->addHeader("\nclass ExecutionContext;\n"); |
| 4795 $header{class}->addHeader("class $v8ClassName : public $implClassName, publi
c ActiveDOMCallback {"); | 4799 $header{class}->addHeader("class $v8ClassName : public $implClassName, publi
c ActiveDOMCallback {"); |
| 4796 $header{class}->addFooter("};\n"); | 4800 $header{class}->addFooter("};\n"); |
| 4797 | 4801 |
| 4798 $header{classPublic}->add(<<END); | 4802 $header{classPublic}->add(<<END); |
| 4799 static PassRefPtr<${v8ClassName}> create(v8::Handle<v8::Value> jsValue, Exec
utionContext* context) | 4803 static Pass${ptrType}Ptr<${v8ClassName}> create(v8::Handle<v8::Value> jsValu
e, ExecutionContext* context) |
| 4800 { | 4804 { |
| 4801 ASSERT(jsValue->IsObject()); | 4805 ASSERT(jsValue->IsObject()); |
| 4802 ASSERT(context); | 4806 ASSERT(context); |
| 4803 return adoptRef(new ${v8ClassName}(v8::Handle<v8::Object>::Cast(jsValue)
, context)); | 4807 return adopt${adoptType}(new ${v8ClassName}(v8::Handle<v8::Object>::Cast
(jsValue), context)); |
| 4804 } | 4808 } |
| 4805 | 4809 |
| 4806 virtual ~${v8ClassName}(); | 4810 virtual ~${v8ClassName}(); |
| 4807 | 4811 |
| 4808 END | 4812 END |
| 4809 | 4813 |
| 4810 # Functions | 4814 # Functions |
| 4811 my $numFunctions = @{$interface->functions}; | 4815 my $numFunctions = @{$interface->functions}; |
| 4812 if ($numFunctions > 0) { | 4816 if ($numFunctions > 0) { |
| 4813 foreach my $function (@{$interface->functions}) { | 4817 foreach my $function (@{$interface->functions}) { |
| (...skipping 1535 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6349 my $interface = shift; | 6353 my $interface = shift; |
| 6350 | 6354 |
| 6351 return 1 if $interface->extendedAttributes->{"CustomToV8"}; | 6355 return 1 if $interface->extendedAttributes->{"CustomToV8"}; |
| 6352 return 1 if $interface->extendedAttributes->{"CustomWrap"}; | 6356 return 1 if $interface->extendedAttributes->{"CustomWrap"}; |
| 6353 return 1 if $interface->extendedAttributes->{"SpecialWrapFor"}; | 6357 return 1 if $interface->extendedAttributes->{"SpecialWrapFor"}; |
| 6354 return 1 if InheritsInterface($interface, "Document"); | 6358 return 1 if InheritsInterface($interface, "Document"); |
| 6355 | 6359 |
| 6356 return 0; | 6360 return 0; |
| 6357 } | 6361 } |
| 6358 | 6362 |
| 6363 # FIXME: This list should go away entirely, see http://crbug.com/323681 |
| 6364 sub IsLegacyRefCountedCallback |
| 6365 { |
| 6366 my $name = shift; |
| 6367 # WebSQL |
| 6368 return 1 if $name eq "DatabaseCallback"; |
| 6369 return 1 if $name eq "SQLTransactionCallback"; |
| 6370 return 1 if $name eq "SQLTransactionErrorCallback"; |
| 6371 return 1 if $name eq "SQLTransactionSyncCallback"; |
| 6372 return 1 if $name eq "SQLStatementCallback"; |
| 6373 return 1 if $name eq "SQLStatementErrorCallback"; |
| 6374 # Filesystem |
| 6375 return 1 if $name eq "EntryCallback"; |
| 6376 return 1 if $name eq "EntriesCallback"; |
| 6377 return 1 if $name eq "ErrorCallback"; |
| 6378 return 1 if $name eq "FileCallback"; |
| 6379 return 1 if $name eq "FileSystemCallback"; |
| 6380 return 1 if $name eq "FileWriterCallback"; |
| 6381 return 1 if $name eq "MetadataCallback"; |
| 6382 # requestAnimationFrame |
| 6383 return 1 if $name eq "RequestAnimationFrameCallback"; |
| 6384 # Used everywhere |
| 6385 return 1 if $name eq "VoidCallback"; |
| 6386 return 0; |
| 6387 } |
| 6388 |
| 6359 1; | 6389 1; |
| OLD | NEW |