Chromium Code Reviews| 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 5411 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5422 $code .= $nativeValue . "\n" if $nativeValue; # Skip blank line for void re turn type | 5422 $code .= $nativeValue . "\n" if $nativeValue; # Skip blank line for void re turn type |
| 5423 | 5423 |
| 5424 return $code; | 5424 return $code; |
| 5425 } | 5425 } |
| 5426 | 5426 |
| 5427 sub GetNativeType | 5427 sub GetNativeType |
| 5428 { | 5428 { |
| 5429 my $type = shift; | 5429 my $type = shift; |
| 5430 my $extendedAttributes = shift; | 5430 my $extendedAttributes = shift; |
| 5431 my $isParameter = shift; | 5431 my $isParameter = shift; |
| 5432 my $isMember = shift; | |
| 5432 | 5433 |
| 5433 my $svgNativeType = GetSVGTypeNeedingTearOff($type); | 5434 my $svgNativeType = GetSVGTypeNeedingTearOff($type); |
| 5434 if ($svgNativeType) { | 5435 if ($svgNativeType) { |
| 5435 if ($svgNativeType =~ /List$/) { | 5436 if ($svgNativeType =~ /List$/) { |
| 5436 return "${svgNativeType}*"; | 5437 return "${svgNativeType}*"; |
| 5437 } else { | 5438 } else { |
| 5438 return "RefPtr<${svgNativeType} >"; | 5439 return "RefPtr<${svgNativeType} >"; |
| 5439 } | 5440 } |
| 5440 } | 5441 } |
| 5441 | 5442 |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 5472 } | 5473 } |
| 5473 | 5474 |
| 5474 # We need to check [ImplementedAs] extended attribute for wrapper types. | 5475 # We need to check [ImplementedAs] extended attribute for wrapper types. |
| 5475 return "RefPtrWillBeRawPtr<$type>" if $type eq "XPathNSResolver"; # FIXME: Remove custom bindings for XPathNSResolver. | 5476 return "RefPtrWillBeRawPtr<$type>" if $type eq "XPathNSResolver"; # FIXME: Remove custom bindings for XPathNSResolver. |
| 5476 if (IsWrapperType($type)) { | 5477 if (IsWrapperType($type)) { |
| 5477 my $interface = ParseInterface($type); | 5478 my $interface = ParseInterface($type); |
| 5478 my $implClassName = GetImplName($interface); | 5479 my $implClassName = GetImplName($interface); |
| 5479 if ($isParameter) { | 5480 if ($isParameter) { |
| 5480 return "$implClassName*"; | 5481 return "$implClassName*"; |
| 5481 } elsif (IsWillBeGarbageCollectedType($interface->name)) { | 5482 } elsif (IsWillBeGarbageCollectedType($interface->name)) { |
| 5482 return "RefPtrWillBeRawPtr<$implClassName>"; | 5483 if ($isMember) { |
| 5484 return "RefPtrWillBeMember<$implClassName>"; | |
|
Nils Barth (inactive)
2014/02/26 07:17:54
Keishi, could you please add a test case?
Since t
keishi
2014/02/27 07:33:34
I'm not sure if it is right but I've added a test.
Nils Barth (inactive)
2014/02/27 11:20:53
Thanks, looks generally ok;
I'll take a closer loo
Nils Barth (inactive)
2014/03/03 02:47:53
Current test case looks ok, but you need one more
| |
| 5485 } else { | |
| 5486 return "RefPtrWillBeRawPtr<$implClassName>"; | |
| 5487 } | |
| 5483 } else { | 5488 } else { |
| 5484 return "RefPtr<$implClassName>"; | 5489 return "RefPtr<$implClassName>"; |
| 5485 } | 5490 } |
| 5486 } | 5491 } |
| 5487 return "RefPtr<$type>" if IsRefPtrType($type) and (not $isParameter or $nonW rapperTypes{$type}); | 5492 return "RefPtr<$type>" if IsRefPtrType($type) and (not $isParameter or $nonW rapperTypes{$type}); |
| 5488 | 5493 |
| 5489 my $arrayOrSequenceType = GetArrayOrSequenceType($type); | 5494 my $arrayOrSequenceType = GetArrayOrSequenceType($type); |
| 5490 | 5495 |
| 5491 if ($arrayOrSequenceType) { | 5496 if ($arrayOrSequenceType) { |
| 5492 my $nativeType = GetNativeType($arrayOrSequenceType); | 5497 if (IsWillBeGarbageCollectedType($arrayOrSequenceType)) { |
| 5493 $nativeType .= " " if ($nativeType =~ />$/); | 5498 my $nativeType = GetNativeType($arrayOrSequenceType, {}, "", "member "); |
| 5494 return "Vector<${nativeType}>"; | 5499 $nativeType .= " " if ($nativeType =~ />$/); |
| 5500 return "WillBeHeapVector<${nativeType}>"; | |
| 5501 } else { | |
| 5502 my $nativeType = GetNativeType($arrayOrSequenceType); | |
| 5503 $nativeType .= " " if ($nativeType =~ />$/); | |
| 5504 return "Vector<${nativeType}>"; | |
| 5505 } | |
| 5495 } | 5506 } |
| 5496 | 5507 |
| 5497 # Default, assume native type is a pointer with same type name as idl type | 5508 # Default, assume native type is a pointer with same type name as idl type |
| 5498 return "${type}*"; | 5509 return "${type}*"; |
| 5499 } | 5510 } |
| 5500 | 5511 |
| 5501 sub GetNativeTypeForCallbacks | 5512 sub GetNativeTypeForCallbacks |
| 5502 { | 5513 { |
| 5503 my $type = shift; | 5514 my $type = shift; |
| 5504 return "const String&" if $type eq "DOMString"; | 5515 return "const String&" if $type eq "DOMString"; |
| 5505 return "PassRefPtr<SerializedScriptValue>" if $type eq "SerializedScriptValu e"; | 5516 return "PassRefPtr<SerializedScriptValue>" if $type eq "SerializedScriptValu e"; |
| 5506 return "void" if $type eq "void"; | 5517 return "void" if $type eq "void"; |
| 5507 | 5518 |
| 5508 # Callbacks use raw pointers, so pass isParameter = 1 | 5519 # Callbacks use raw pointers, so pass isParameter = 1 |
| 5509 my $nativeType = GetNativeType($type, {}, "parameter"); | 5520 my $nativeType = GetNativeType($type, {}, "parameter"); |
| 5510 return "const $nativeType&" if $nativeType =~ /^Vector/; | 5521 return "const $nativeType&" if $nativeType =~ /^Vector/; |
| 5522 return "const $nativeType&" if $nativeType =~ /^WillBeHeapVector/; | |
| 5511 return $nativeType; | 5523 return $nativeType; |
| 5512 } | 5524 } |
| 5513 | 5525 |
| 5514 sub JSValueToNativeStatement | 5526 sub JSValueToNativeStatement |
| 5515 { | 5527 { |
| 5516 my $type = shift; | 5528 my $type = shift; |
| 5517 my $extendedAttributes = shift; | 5529 my $extendedAttributes = shift; |
| 5518 my $argIndexOrZero = shift; | 5530 my $argIndexOrZero = shift; |
| 5519 my $jsValue = shift; | 5531 my $jsValue = shift; |
| 5520 my $variableName = shift; | 5532 my $variableName = shift; |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5609 return "$value->Is${type}() ? V8${type}::toNative(v8::Handle<v8::${type} >::Cast($value)) : 0" | 5621 return "$value->Is${type}() ? V8${type}::toNative(v8::Handle<v8::${type} >::Cast($value)) : 0" |
| 5610 } | 5622 } |
| 5611 | 5623 |
| 5612 if ($type eq "XPathNSResolver") { | 5624 if ($type eq "XPathNSResolver") { |
| 5613 return "toXPathNSResolver($value, $getIsolate)"; | 5625 return "toXPathNSResolver($value, $getIsolate)"; |
| 5614 } | 5626 } |
| 5615 | 5627 |
| 5616 my $arrayOrSequenceType = GetArrayOrSequenceType($type); | 5628 my $arrayOrSequenceType = GetArrayOrSequenceType($type); |
| 5617 | 5629 |
| 5618 if ($arrayOrSequenceType) { | 5630 if ($arrayOrSequenceType) { |
| 5631 if (IsWillBeGarbageCollectedType($arrayOrSequenceType)) { | |
| 5632 AddToImplIncludes("V8${arrayOrSequenceType}.h"); | |
| 5633 return "(toRefPtrWillBeMemberNativeArray<${arrayOrSequenceType}, V8$ {arrayOrSequenceType}>($value, $argIndexOrZero, $getIsolate))"; | |
|
haraken
2014/02/26 13:58:37
Still I don't fully understand why we need toRefPt
keishi
2014/02/27 07:33:34
I misunderstood. Done.
| |
| 5634 } | |
| 5619 if (IsRefPtrType($arrayOrSequenceType)) { | 5635 if (IsRefPtrType($arrayOrSequenceType)) { |
| 5620 AddToImplIncludes("V8${arrayOrSequenceType}.h"); | 5636 AddToImplIncludes("V8${arrayOrSequenceType}.h"); |
| 5621 return "(toRefPtrNativeArray<${arrayOrSequenceType}, V8${arrayOrSequ enceType}>($value, $argIndexOrZero, $getIsolate))"; | 5637 return "(toRefPtrNativeArray<${arrayOrSequenceType}, V8${arrayOrSequ enceType}>($value, $argIndexOrZero, $getIsolate))"; |
| 5622 } | 5638 } |
| 5623 return "toNativeArray<" . GetNativeType($arrayOrSequenceType) . ">($valu e, $argIndexOrZero, $getIsolate)"; | 5639 return "toNativeArray<" . GetNativeType($arrayOrSequenceType) . ">($valu e, $argIndexOrZero, $getIsolate)"; |
| 5624 } | 5640 } |
| 5625 | 5641 |
| 5626 AddIncludesForType($type); | 5642 AddIncludesForType($type); |
| 5627 | 5643 |
| 5628 AddToImplIncludes("V8${type}.h"); | 5644 AddToImplIncludes("V8${type}.h"); |
| (...skipping 830 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6459 if ($parameter->type eq "SerializedScriptValue") { | 6475 if ($parameter->type eq "SerializedScriptValue") { |
| 6460 return 1; | 6476 return 1; |
| 6461 } elsif (IsIntegerType($parameter->type)) { | 6477 } elsif (IsIntegerType($parameter->type)) { |
| 6462 return 1; | 6478 return 1; |
| 6463 } | 6479 } |
| 6464 } | 6480 } |
| 6465 return 0; | 6481 return 0; |
| 6466 } | 6482 } |
| 6467 | 6483 |
| 6468 1; | 6484 1; |
| OLD | NEW |