| 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 419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 430 | 430 |
| 431 return if SkipIncludeHeader($type); | 431 return if SkipIncludeHeader($type); |
| 432 | 432 |
| 433 # Default includes | 433 # Default includes |
| 434 if ($type eq "EventListener") { | 434 if ($type eq "EventListener") { |
| 435 AddToImplIncludes("core/dom/EventListener.h"); | 435 AddToImplIncludes("core/dom/EventListener.h"); |
| 436 } elsif ($type eq "SerializedScriptValue") { | 436 } elsif ($type eq "SerializedScriptValue") { |
| 437 AddToImplIncludes("bindings/v8/SerializedScriptValue.h"); | 437 AddToImplIncludes("bindings/v8/SerializedScriptValue.h"); |
| 438 } elsif ($type eq "any" || IsCallbackFunctionType($type)) { | 438 } elsif ($type eq "any" || IsCallbackFunctionType($type)) { |
| 439 AddToImplIncludes("bindings/v8/ScriptValue.h"); | 439 AddToImplIncludes("bindings/v8/ScriptValue.h"); |
| 440 } elsif ($type eq "ArrayBuffer") { | 440 } elsif (IsTypedArrayType($type)) { |
| 441 AddToImplIncludes("bindings/v8/custom/V8ArrayBufferCustom.h"); | 441 AddToImplIncludes("bindings/v8/custom/V8${type}Custom.h"); |
| 442 } else { | 442 } else { |
| 443 AddToImplIncludes("V8${type}.h"); | 443 AddToImplIncludes("V8${type}.h"); |
| 444 } | 444 } |
| 445 } | 445 } |
| 446 | 446 |
| 447 sub HeaderFilesForInterface | 447 sub HeaderFilesForInterface |
| 448 { | 448 { |
| 449 my $interfaceName = shift; | 449 my $interfaceName = shift; |
| 450 my $implClassName = shift; | 450 my $implClassName = shift; |
| 451 | 451 |
| 452 my @includes = (); | 452 my @includes = (); |
| 453 if (IsTypedArrayType($interfaceName) or $interfaceName eq "ArrayBuffer") { | 453 if (IsTypedArrayType($interfaceName)) { |
| 454 push(@includes, "wtf/${interfaceName}.h"); | 454 push(@includes, "wtf/${interfaceName}.h"); |
| 455 } elsif (!SkipIncludeHeader($interfaceName)) { | 455 } elsif (!SkipIncludeHeader($interfaceName)) { |
| 456 my $idlFilename = IDLFileForInterface($interfaceName) or die("Could NOT
find IDL file for interface \"$interfaceName\" $!\n"); | 456 my $idlFilename = IDLFileForInterface($interfaceName) or die("Could NOT
find IDL file for interface \"$interfaceName\" $!\n"); |
| 457 my $idlRelPath= "bindings/" . File::Spec->abs2rel($idlFilename, $sourceR
oot); | 457 my $idlRelPath= "bindings/" . File::Spec->abs2rel($idlFilename, $sourceR
oot); |
| 458 push(@includes, dirname($idlRelPath) . "/" . $implClassName . ".h"); | 458 push(@includes, dirname($idlRelPath) . "/" . $implClassName . ".h"); |
| 459 } | 459 } |
| 460 return @includes; | 460 return @includes; |
| 461 } | 461 } |
| 462 | 462 |
| 463 sub NeedsOpaqueRootForGC | 463 sub NeedsOpaqueRootForGC |
| (...skipping 2264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2728 } | 2728 } |
| 2729 | 2729 |
| 2730 $code .= <<END; | 2730 $code .= <<END; |
| 2731 return true; | 2731 return true; |
| 2732 } | 2732 } |
| 2733 | 2733 |
| 2734 END | 2734 END |
| 2735 $implementation{nameSpaceWebCore}->add($code); | 2735 $implementation{nameSpaceWebCore}->add($code); |
| 2736 } | 2736 } |
| 2737 | 2737 |
| 2738 sub GenerateTypedArrayConstructor | |
| 2739 { | |
| 2740 my $interface = shift; | |
| 2741 my $implClassName = GetImplName($interface); | |
| 2742 my $v8ClassName = GetV8ClassName($interface); | |
| 2743 | |
| 2744 my ($nativeType, $arrayType) = GetNativeTypeOfTypedArray($interface); | |
| 2745 AddToImplIncludes("bindings/v8/custom/V8ArrayBufferViewCustom.h"); | |
| 2746 | |
| 2747 $implementation{nameSpaceInternal}->add(<<END); | |
| 2748 static void constructor(const v8::FunctionCallbackInfo<v8::Value>& args) | |
| 2749 { | |
| 2750 return constructWebGLArray<$implClassName, ${v8ClassName}, $nativeType>(args
, &${v8ClassName}::info, $arrayType); | |
| 2751 } | |
| 2752 | |
| 2753 END | |
| 2754 } | |
| 2755 | |
| 2756 sub GenerateNamedConstructor | 2738 sub GenerateNamedConstructor |
| 2757 { | 2739 { |
| 2758 my $function = shift; | 2740 my $function = shift; |
| 2759 my $interface = shift; | 2741 my $interface = shift; |
| 2760 | 2742 |
| 2761 my $implClassName = GetImplName($interface); | 2743 my $implClassName = GetImplName($interface); |
| 2762 my $v8ClassName = GetV8ClassName($interface); | 2744 my $v8ClassName = GetV8ClassName($interface); |
| 2763 my $raisesExceptions = $function->extendedAttributes->{"RaisesException"}; | 2745 my $raisesExceptions = $function->extendedAttributes->{"RaisesException"}; |
| 2764 if ($interface->extendedAttributes->{"ConstructorRaisesException"}) { | 2746 if ($interface->extendedAttributes->{"ConstructorRaisesException"}) { |
| 2765 $raisesExceptions = 1; | 2747 $raisesExceptions = 1; |
| (...skipping 2254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5020 return "Dictionary" if $type eq "Dictionary"; | 5002 return "Dictionary" if $type eq "Dictionary"; |
| 5021 | 5003 |
| 5022 return "RefPtr<DOMStringList>" if $type eq "DOMStringList"; | 5004 return "RefPtr<DOMStringList>" if $type eq "DOMStringList"; |
| 5023 return "RefPtr<MediaQueryListListener>" if $type eq "MediaQueryListListener"
; | 5005 return "RefPtr<MediaQueryListListener>" if $type eq "MediaQueryListListener"
; |
| 5024 return "RefPtr<NodeFilter>" if $type eq "NodeFilter"; | 5006 return "RefPtr<NodeFilter>" if $type eq "NodeFilter"; |
| 5025 return "RefPtr<SerializedScriptValue>" if $type eq "SerializedScriptValue"; | 5007 return "RefPtr<SerializedScriptValue>" if $type eq "SerializedScriptValue"; |
| 5026 return "RefPtr<XPathNSResolver>" if $type eq "XPathNSResolver"; | 5008 return "RefPtr<XPathNSResolver>" if $type eq "XPathNSResolver"; |
| 5027 | 5009 |
| 5028 die "UnionType is not supported" if IsUnionType($type); | 5010 die "UnionType is not supported" if IsUnionType($type); |
| 5029 | 5011 |
| 5030 if ($type eq "ArrayBuffer") { | 5012 if (IsTypedArrayType($type)) { |
| 5031 return $isParameter ? "ArrayBuffer*" : "RefPtr<ArrayBuffer>"; | 5013 return $isParameter ? "${type}*" : "RefPtr<${type}>"; |
| 5032 } | 5014 } |
| 5033 | 5015 |
| 5034 # We need to check [ImplementedAs] extended attribute for wrapper types. | 5016 # We need to check [ImplementedAs] extended attribute for wrapper types. |
| 5035 if (IsWrapperType($type)) { | 5017 if (IsWrapperType($type)) { |
| 5036 my $interface = ParseInterface($type); | 5018 my $interface = ParseInterface($type); |
| 5037 my $implClassName = GetImplName($interface); | 5019 my $implClassName = GetImplName($interface); |
| 5038 return $isParameter ? "${implClassName}*" : "RefPtr<${implClassName}>"; | 5020 return $isParameter ? "${implClassName}*" : "RefPtr<${implClassName}>"; |
| 5039 } | 5021 } |
| 5040 return "RefPtr<${type}>" if IsRefPtrType($type) and not $isParameter; | 5022 return "RefPtr<${type}>" if IsRefPtrType($type) and not $isParameter; |
| 5041 | 5023 |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5149 | 5131 |
| 5150 if ($type eq "MediaQueryListListener") { | 5132 if ($type eq "MediaQueryListListener") { |
| 5151 AddToImplIncludes("core/css/MediaQueryListListener.h"); | 5133 AddToImplIncludes("core/css/MediaQueryListListener.h"); |
| 5152 return "MediaQueryListListener::create(" . $value . ")"; | 5134 return "MediaQueryListListener::create(" . $value . ")"; |
| 5153 } | 5135 } |
| 5154 | 5136 |
| 5155 if ($type eq "EventTarget") { | 5137 if ($type eq "EventTarget") { |
| 5156 return "V8DOMWrapper::isDOMWrapper($value) ? toWrapperTypeInfo(v8::Handl
e<v8::Object>::Cast($value))->toEventTarget(v8::Handle<v8::Object>::Cast($value)
) : 0"; | 5138 return "V8DOMWrapper::isDOMWrapper($value) ? toWrapperTypeInfo(v8::Handl
e<v8::Object>::Cast($value))->toEventTarget(v8::Handle<v8::Object>::Cast($value)
) : 0"; |
| 5157 } | 5139 } |
| 5158 | 5140 |
| 5159 if ($type eq "ArrayBuffer") { | 5141 if (IsTypedArrayType($type)) { |
| 5160 AddIncludesForType($type); | 5142 AddIncludesForType($type); |
| 5161 return "$value->IsArrayBuffer() ? V8ArrayBuffer::toNative(v8::Handle<v8:
:ArrayBuffer>::Cast($value)) : 0" | 5143 return "$value->Is${type}() ? V8${type}::toNative(v8::Handle<v8::${type}
>::Cast($value)) : 0" |
| 5162 } | 5144 } |
| 5163 | 5145 |
| 5164 if ($type eq "XPathNSResolver") { | 5146 if ($type eq "XPathNSResolver") { |
| 5165 return "toXPathNSResolver($value, $getIsolate)"; | 5147 return "toXPathNSResolver($value, $getIsolate)"; |
| 5166 } | 5148 } |
| 5167 | 5149 |
| 5168 my $arrayOrSequenceType = GetArrayOrSequenceType($type); | 5150 my $arrayOrSequenceType = GetArrayOrSequenceType($type); |
| 5169 | 5151 |
| 5170 if ($arrayOrSequenceType) { | 5152 if ($arrayOrSequenceType) { |
| 5171 if (IsRefPtrType($arrayOrSequenceType)) { | 5153 if (IsRefPtrType($arrayOrSequenceType)) { |
| (...skipping 13 matching lines...) Expand all Loading... |
| 5185 { | 5167 { |
| 5186 my $function = shift; | 5168 my $function = shift; |
| 5187 my $count = @{$function->parameters}; | 5169 my $count = @{$function->parameters}; |
| 5188 my $name = $function->name; | 5170 my $name = $function->name; |
| 5189 my $code = " const int ${name}Argc = ${count};\n" . | 5171 my $code = " const int ${name}Argc = ${count};\n" . |
| 5190 " v8::Handle<v8::FunctionTemplate> ${name}Argv[${name}Argc] = { "; | 5172 " v8::Handle<v8::FunctionTemplate> ${name}Argv[${name}Argc] = { "; |
| 5191 my $first = 1; | 5173 my $first = 1; |
| 5192 foreach my $parameter (@{$function->parameters}) { | 5174 foreach my $parameter (@{$function->parameters}) { |
| 5193 if ($first) { $first = 0; } | 5175 if ($first) { $first = 0; } |
| 5194 else { $code .= ", "; } | 5176 else { $code .= ", "; } |
| 5195 if (IsWrapperType($parameter->type) && $parameter->type ne "ArrayBuffer"
) { | 5177 if (IsWrapperType($parameter->type) && not IsTypedArrayType($parameter->
type)) { |
| 5196 if ($parameter->type eq "XPathNSResolver") { | 5178 if ($parameter->type eq "XPathNSResolver") { |
| 5197 # Special case for XPathNSResolver. All other browsers accepts
a callable, | 5179 # Special case for XPathNSResolver. All other browsers accepts
a callable, |
| 5198 # so, even though it's against IDL, accept objects here. | 5180 # so, even though it's against IDL, accept objects here. |
| 5199 $code .= "v8::Handle<v8::FunctionTemplate>()"; | 5181 $code .= "v8::Handle<v8::FunctionTemplate>()"; |
| 5200 } else { | 5182 } else { |
| 5201 my $type = $parameter->type; | 5183 my $type = $parameter->type; |
| 5202 my $arrayOrSequenceType = GetArrayOrSequenceType($type); | 5184 my $arrayOrSequenceType = GetArrayOrSequenceType($type); |
| 5203 | 5185 |
| 5204 if ($arrayOrSequenceType) { | 5186 if ($arrayOrSequenceType) { |
| 5205 if (IsRefPtrType($arrayOrSequenceType)) { | 5187 if (IsRefPtrType($arrayOrSequenceType)) { |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5274 return 0 if IsEnumType($type); | 5256 return 0 if IsEnumType($type); |
| 5275 return 0 if IsPrimitiveType($type); | 5257 return 0 if IsPrimitiveType($type); |
| 5276 return 0 if $type eq "DOMString"; | 5258 return 0 if $type eq "DOMString"; |
| 5277 return !$nonWrapperTypes{$type}; | 5259 return !$nonWrapperTypes{$type}; |
| 5278 } | 5260 } |
| 5279 | 5261 |
| 5280 sub IsCallbackInterface | 5262 sub IsCallbackInterface |
| 5281 { | 5263 { |
| 5282 my $type = shift; | 5264 my $type = shift; |
| 5283 return 0 unless IsWrapperType($type); | 5265 return 0 unless IsWrapperType($type); |
| 5284 return 0 if $type eq "ArrayBuffer"; | 5266 return 0 if IsTypedArrayType($type); |
| 5285 | 5267 |
| 5286 my $idlFile = IDLFileForInterface($type) | 5268 my $idlFile = IDLFileForInterface($type) |
| 5287 or die("Could NOT find IDL file for interface \"$type\"!\n"); | 5269 or die("Could NOT find IDL file for interface \"$type\"!\n"); |
| 5288 | 5270 |
| 5289 open FILE, "<", $idlFile; | 5271 open FILE, "<", $idlFile; |
| 5290 my @lines = <FILE>; | 5272 my @lines = <FILE>; |
| 5291 close FILE; | 5273 close FILE; |
| 5292 | 5274 |
| 5293 my $fileContents = join('', @lines); | 5275 my $fileContents = join('', @lines); |
| 5294 return ($fileContents =~ /callback\s+interface\s+(\w+)/gs); | 5276 return ($fileContents =~ /callback\s+interface\s+(\w+)/gs); |
| (...skipping 730 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6025 if ($currentInterface->extendedAttributes->{$extendedAttribute}) { | 6007 if ($currentInterface->extendedAttributes->{$extendedAttribute}) { |
| 6026 $found = 1; | 6008 $found = 1; |
| 6027 } | 6009 } |
| 6028 return 1 if $found; | 6010 return 1 if $found; |
| 6029 }, 0); | 6011 }, 0); |
| 6030 | 6012 |
| 6031 return $found; | 6013 return $found; |
| 6032 } | 6014 } |
| 6033 | 6015 |
| 6034 1; | 6016 1; |
| OLD | NEW |