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 |