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 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
141 my %header; | 141 my %header; |
142 | 142 |
143 # Implementation code structure: | 143 # Implementation code structure: |
144 # Root ... Copyright | 144 # Root ... Copyright |
145 # Conditional ... #if FEATURE ... #endif (to be removed soon) | 145 # Conditional ... #if FEATURE ... #endif (to be removed soon) |
146 # Includes | 146 # Includes |
147 # NameSpaceWebCore | 147 # NameSpaceWebCore |
148 # NameSpaceInternal ... namespace ${implClassName}V8Internal in case of no
n-callback | 148 # NameSpaceInternal ... namespace ${implClassName}V8Internal in case of no
n-callback |
149 my %implementation; | 149 my %implementation; |
150 | 150 |
| 151 # Promise is not yet in the Web IDL spec but is going to be speced |
| 152 # as primitive types in the future. |
151 my %primitiveTypeHash = ("boolean" => 1, | 153 my %primitiveTypeHash = ("boolean" => 1, |
152 "void" => 1, | 154 "void" => 1, |
153 "Date" => 1, | 155 "Date" => 1, |
| 156 "Promise" => 1, |
154 "byte" => 1, | 157 "byte" => 1, |
155 "octet" => 1, | 158 "octet" => 1, |
156 "short" => 1, | 159 "short" => 1, |
157 "long" => 1, | 160 "long" => 1, |
158 "long long" => 1, | 161 "long long" => 1, |
159 "unsigned short" => 1, | 162 "unsigned short" => 1, |
160 "unsigned long" => 1, | 163 "unsigned long" => 1, |
161 "unsigned long long" => 1, | 164 "unsigned long long" => 1, |
162 "float" => 1, | 165 "float" => 1, |
163 "double" => 1, | 166 "double" => 1, |
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
420 | 423 |
421 return if SkipIncludeHeader($type); | 424 return if SkipIncludeHeader($type); |
422 | 425 |
423 # Default includes | 426 # Default includes |
424 if ($type eq "EventListener" or $type eq "EventHandler") { | 427 if ($type eq "EventListener" or $type eq "EventHandler") { |
425 AddToImplIncludes("core/dom/EventListener.h"); | 428 AddToImplIncludes("core/dom/EventListener.h"); |
426 } elsif ($type eq "SerializedScriptValue") { | 429 } elsif ($type eq "SerializedScriptValue") { |
427 AddToImplIncludes("bindings/v8/SerializedScriptValue.h"); | 430 AddToImplIncludes("bindings/v8/SerializedScriptValue.h"); |
428 } elsif ($type eq "any" || IsCallbackFunctionType($type)) { | 431 } elsif ($type eq "any" || IsCallbackFunctionType($type)) { |
429 AddToImplIncludes("bindings/v8/ScriptValue.h"); | 432 AddToImplIncludes("bindings/v8/ScriptValue.h"); |
| 433 } elsif ($type eq "Promise") { |
| 434 AddToImplIncludes("bindings/v8/ScriptPromise.h"); |
430 } elsif (IsTypedArrayType($type)) { | 435 } elsif (IsTypedArrayType($type)) { |
431 AddToImplIncludes("bindings/v8/custom/V8${type}Custom.h"); | 436 AddToImplIncludes("bindings/v8/custom/V8${type}Custom.h"); |
432 } else { | 437 } else { |
433 AddToImplIncludes("V8${type}.h"); | 438 AddToImplIncludes("V8${type}.h"); |
434 } | 439 } |
435 } | 440 } |
436 | 441 |
437 sub HeaderFilesForInterface | 442 sub HeaderFilesForInterface |
438 { | 443 { |
439 my $interfaceName = shift; | 444 my $interfaceName = shift; |
(...skipping 2011 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2451 if (IsWrapperType($argType)) { | 2456 if (IsWrapperType($argType)) { |
2452 $parameterCheckString .= " if (args.Length() > $paramInde
x && !isUndefinedOrNull($argValue) && !V8${argType}::HasInstance($argValue, args
.GetIsolate(), worldType(args.GetIsolate()))) {\n"; | 2457 $parameterCheckString .= " if (args.Length() > $paramInde
x && !isUndefinedOrNull($argValue) && !V8${argType}::HasInstance($argValue, args
.GetIsolate(), worldType(args.GetIsolate()))) {\n"; |
2453 $parameterCheckString .= " throwTypeError(args.GetIso
late());\n"; | 2458 $parameterCheckString .= " throwTypeError(args.GetIso
late());\n"; |
2454 $parameterCheckString .= " return;\n"; | 2459 $parameterCheckString .= " return;\n"; |
2455 $parameterCheckString .= " }\n"; | 2460 $parameterCheckString .= " }\n"; |
2456 } | 2461 } |
2457 } | 2462 } |
2458 my $default = defined $parameter->extendedAttributes->{"Default"} ?
$parameter->extendedAttributes->{"Default"} : ""; | 2463 my $default = defined $parameter->extendedAttributes->{"Default"} ?
$parameter->extendedAttributes->{"Default"} : ""; |
2459 my $jsValue = $parameter->isOptional && $default eq "NullString" ? "
argumentOrNull(args, $paramIndex)" : "args[$paramIndex]"; | 2464 my $jsValue = $parameter->isOptional && $default eq "NullString" ? "
argumentOrNull(args, $paramIndex)" : "args[$paramIndex]"; |
2460 $parameterCheckString .= JSValueToNativeStatement($parameter->type,
$parameter->extendedAttributes, $jsValue, $parameterName, " ", "args.GetIsola
te()"); | 2465 $parameterCheckString .= JSValueToNativeStatement($parameter->type,
$parameter->extendedAttributes, $jsValue, $parameterName, " ", "args.GetIsola
te()"); |
2461 if ($nativeType eq 'Dictionary') { | 2466 if ($nativeType eq 'Dictionary' or $nativeType eq 'ScriptPromise') { |
2462 $parameterCheckString .= " if (!$parameterName.isUndefinedOrN
ull() && !$parameterName.isObject()) {\n"; | 2467 $parameterCheckString .= " if (!$parameterName.isUndefinedOrN
ull() && !$parameterName.isObject()) {\n"; |
2463 $parameterCheckString .= " throwTypeError(\"Not an object
.\", args.GetIsolate());\n"; | 2468 $parameterCheckString .= " throwTypeError(\"Not an object
.\", args.GetIsolate());\n"; |
2464 $parameterCheckString .= " return;\n"; | 2469 $parameterCheckString .= " return;\n"; |
2465 $parameterCheckString .= " }\n"; | 2470 $parameterCheckString .= " }\n"; |
2466 } | 2471 } |
2467 } | 2472 } |
2468 | 2473 |
2469 $paramIndex++; | 2474 $paramIndex++; |
2470 } | 2475 } |
2471 return ($parameterCheckString, $paramIndex, %replacements); | 2476 return ($parameterCheckString, $paramIndex, %replacements); |
(...skipping 682 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3154 my $unionMemberVariable = $variableName . $i; | 3159 my $unionMemberVariable = $variableName . $i; |
3155 my $isNull = GenerateIsNullExpression($unionMemberType, $unionMember
Variable); | 3160 my $isNull = GenerateIsNullExpression($unionMemberType, $unionMember
Variable); |
3156 push @expression, $isNull; | 3161 push @expression, $isNull; |
3157 } | 3162 } |
3158 return join " && ", @expression; | 3163 return join " && ", @expression; |
3159 } | 3164 } |
3160 if (IsRefPtrType($type)) { | 3165 if (IsRefPtrType($type)) { |
3161 return "!${variableName}"; | 3166 return "!${variableName}"; |
3162 } elsif ($type eq "DOMString") { | 3167 } elsif ($type eq "DOMString") { |
3163 return "${variableName}.isNull()"; | 3168 return "${variableName}.isNull()"; |
| 3169 } elsif ($type eq "Promise") { |
| 3170 return "${variableName}.isNull()"; |
3164 } else { | 3171 } else { |
3165 return ""; | 3172 return ""; |
3166 } | 3173 } |
3167 } | 3174 } |
3168 | 3175 |
3169 sub GenerateIfElseStatement | 3176 sub GenerateIfElseStatement |
3170 { | 3177 { |
3171 my $type = shift; | 3178 my $type = shift; |
3172 my $outputVariableName = shift; | 3179 my $outputVariableName = shift; |
3173 my $conditions = shift; | 3180 my $conditions = shift; |
(...skipping 1829 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5003 $mode = "WithUndefinedOrNullCheck"; | 5010 $mode = "WithUndefinedOrNullCheck"; |
5004 } elsif (($extendedAttributes->{"TreatNullAs"} and $extendedAttributes->
{"TreatNullAs"} eq "NullString") or $extendedAttributes->{"Reflect"}) { | 5011 } elsif (($extendedAttributes->{"TreatNullAs"} and $extendedAttributes->
{"TreatNullAs"} eq "NullString") or $extendedAttributes->{"Reflect"}) { |
5005 $mode = "WithNullCheck"; | 5012 $mode = "WithNullCheck"; |
5006 } | 5013 } |
5007 # FIXME: Add the case for 'elsif ($attributeOrParameter->extendedAttribu
tes->{"TreatUndefinedAs"} and $attributeOrParameter->extendedAttributes->{"Treat
UndefinedAs"} eq "NullString"))'. | 5014 # FIXME: Add the case for 'elsif ($attributeOrParameter->extendedAttribu
tes->{"TreatUndefinedAs"} and $attributeOrParameter->extendedAttributes->{"Treat
UndefinedAs"} eq "NullString"))'. |
5008 return "V8StringResource<$mode>"; | 5015 return "V8StringResource<$mode>"; |
5009 } | 5016 } |
5010 | 5017 |
5011 return "String" if $type eq "DOMString" or IsEnumType($type); | 5018 return "String" if $type eq "DOMString" or IsEnumType($type); |
5012 | 5019 |
| 5020 return "ScriptPromise" if $type eq "Promise"; |
| 5021 |
5013 return "Range::CompareHow" if $type eq "CompareHow"; | 5022 return "Range::CompareHow" if $type eq "CompareHow"; |
5014 return "DOMTimeStamp" if $type eq "DOMTimeStamp"; | 5023 return "DOMTimeStamp" if $type eq "DOMTimeStamp"; |
5015 return "double" if $type eq "Date"; | 5024 return "double" if $type eq "Date"; |
5016 return "ScriptValue" if $type eq "any" or IsCallbackFunctionType($type); | 5025 return "ScriptValue" if $type eq "any" or IsCallbackFunctionType($type); |
5017 return "Dictionary" if $type eq "Dictionary"; | 5026 return "Dictionary" if $type eq "Dictionary"; |
5018 | 5027 |
5019 return "RefPtr<DOMStringList>" if $type eq "DOMStringList"; | 5028 return "RefPtr<DOMStringList>" if $type eq "DOMStringList"; |
5020 return "RefPtr<MediaQueryListListener>" if $type eq "MediaQueryListListener"
; | 5029 return "RefPtr<MediaQueryListListener>" if $type eq "MediaQueryListListener"
; |
5021 return "RefPtr<NodeFilter>" if $type eq "NodeFilter"; | 5030 return "RefPtr<NodeFilter>" if $type eq "NodeFilter"; |
5022 return "RefPtr<SerializedScriptValue>" if $type eq "SerializedScriptValue"; | 5031 return "RefPtr<SerializedScriptValue>" if $type eq "SerializedScriptValue"; |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5131 if ($type eq "Dictionary") { | 5140 if ($type eq "Dictionary") { |
5132 AddToImplIncludes("bindings/v8/Dictionary.h"); | 5141 AddToImplIncludes("bindings/v8/Dictionary.h"); |
5133 return "Dictionary($value, $getIsolate)"; | 5142 return "Dictionary($value, $getIsolate)"; |
5134 } | 5143 } |
5135 | 5144 |
5136 if ($type eq "any" || IsCallbackFunctionType($type)) { | 5145 if ($type eq "any" || IsCallbackFunctionType($type)) { |
5137 AddToImplIncludes("bindings/v8/ScriptValue.h"); | 5146 AddToImplIncludes("bindings/v8/ScriptValue.h"); |
5138 return "ScriptValue($value)"; | 5147 return "ScriptValue($value)"; |
5139 } | 5148 } |
5140 | 5149 |
| 5150 if ($type eq "Promise") { |
| 5151 AddToImplIncludes("bindings/v8/ScriptPromise.h"); |
| 5152 return "ScriptPromise($value)"; |
| 5153 } |
| 5154 |
5141 if ($type eq "NodeFilter") { | 5155 if ($type eq "NodeFilter") { |
5142 return "toNodeFilter($value, $getIsolate)"; | 5156 return "toNodeFilter($value, $getIsolate)"; |
5143 } | 5157 } |
5144 | 5158 |
5145 if ($type eq "MediaQueryListListener") { | 5159 if ($type eq "MediaQueryListListener") { |
5146 AddToImplIncludes("core/css/MediaQueryListListener.h"); | 5160 AddToImplIncludes("core/css/MediaQueryListListener.h"); |
5147 return "MediaQueryListListener::create(" . $value . ")"; | 5161 return "MediaQueryListListener::create(" . $value . ")"; |
5148 } | 5162 } |
5149 | 5163 |
5150 if ($type eq "EventTarget") { | 5164 if ($type eq "EventTarget") { |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5411 return "${indent}v8SetReturnValue(${getCallbackInfo}, static_cast<double
>($nativeValue));" if $isReturnValue; | 5425 return "${indent}v8SetReturnValue(${getCallbackInfo}, static_cast<double
>($nativeValue));" if $isReturnValue; |
5412 return "$indent$receiver v8::Number::New(static_cast<double>($nativeValu
e));"; | 5426 return "$indent$receiver v8::Number::New(static_cast<double>($nativeValu
e));"; |
5413 } | 5427 } |
5414 | 5428 |
5415 if (IsPrimitiveType($type)) { | 5429 if (IsPrimitiveType($type)) { |
5416 die "unexpected type $type" if not ($type eq "float" or $type eq "double
"); | 5430 die "unexpected type $type" if not ($type eq "float" or $type eq "double
"); |
5417 return "${indent}v8SetReturnValue(${getCallbackInfo}, ${nativeValue});"
if $isReturnValue; | 5431 return "${indent}v8SetReturnValue(${getCallbackInfo}, ${nativeValue});"
if $isReturnValue; |
5418 return "$indent$receiver v8::Number::New($nativeValue);"; | 5432 return "$indent$receiver v8::Number::New($nativeValue);"; |
5419 } | 5433 } |
5420 | 5434 |
5421 if ($nativeType eq "ScriptValue") { | 5435 if ($nativeType eq "ScriptValue" or $nativeType eq "ScriptPromise") { |
5422 return "${indent}v8SetReturnValue(${getCallbackInfo}, ${nativeValue}.v8V
alue());" if $isReturnValue; | 5436 return "${indent}v8SetReturnValue(${getCallbackInfo}, ${nativeValue}.v8V
alue());" if $isReturnValue; |
5423 return "$indent$receiver $nativeValue.v8Value();"; | 5437 return "$indent$receiver $nativeValue.v8Value();"; |
5424 } | 5438 } |
5425 | 5439 |
5426 my $conv = $extendedAttributes->{"TreatReturnedNullStringAs"}; | 5440 my $conv = $extendedAttributes->{"TreatReturnedNullStringAs"}; |
5427 if (($type eq "DOMString" || IsEnumType($type)) && $isReturnValue) { | 5441 if (($type eq "DOMString" || IsEnumType($type)) && $isReturnValue) { |
5428 my $functionSuffix = ""; | 5442 my $functionSuffix = ""; |
5429 if (defined $conv) { | 5443 if (defined $conv) { |
5430 if ($conv eq "Null") { | 5444 if ($conv eq "Null") { |
5431 $functionSuffix = "OrNull"; | 5445 $functionSuffix = "OrNull"; |
(...skipping 565 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5997 if ($currentInterface->extendedAttributes->{$extendedAttribute}) { | 6011 if ($currentInterface->extendedAttributes->{$extendedAttribute}) { |
5998 $found = 1; | 6012 $found = 1; |
5999 } | 6013 } |
6000 return 1 if $found; | 6014 return 1 if $found; |
6001 }, 0); | 6015 }, 0); |
6002 | 6016 |
6003 return $found; | 6017 return $found; |
6004 } | 6018 } |
6005 | 6019 |
6006 1; | 6020 1; |
OLD | NEW |