Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(87)

Side by Side Diff: Source/bindings/scripts/code_generator_v8.pm

Issue 153883003: [SVG] SVGAnimatedTransform{,List} migration to new SVG property impl. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: haraken review Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 "SVGLength" => 1, 238 "SVGLength" => 1,
239 "SVGLengthList" => 1, 239 "SVGLengthList" => 1,
240 "SVGNumber" => 1, 240 "SVGNumber" => 1,
241 "SVGNumberList" => 1, 241 "SVGNumberList" => 1,
242 "SVGPoint" => 1, 242 "SVGPoint" => 1,
243 "SVGPointList" => 1, 243 "SVGPointList" => 1,
244 "SVGPreserveAspectRatio" => 1, 244 "SVGPreserveAspectRatio" => 1,
245 "SVGRect" => 1, 245 "SVGRect" => 1,
246 "SVGString" => 1, 246 "SVGString" => 1,
247 "SVGStringList" => 1, 247 "SVGStringList" => 1,
248 "SVGTransform" => 1,
249 "SVGTransformList" => 1,
248 ); 250 );
249 251
250 my %svgTypeNeedingTearOff = ( 252 my %svgTypeNeedingTearOff = (
251 "SVGAngle" => "SVGPropertyTearOff<SVGAngle>", 253 "SVGAngle" => "SVGPropertyTearOff<SVGAngle>",
252 "SVGMatrix" => "SVGMatrixTearOff",
253 "SVGPathSegList" => "SVGPathSegListPropertyTearOff", 254 "SVGPathSegList" => "SVGPathSegListPropertyTearOff",
254 "SVGTransform" => "SVGPropertyTearOff<SVGTransform>",
255 "SVGTransformList" => "SVGTransformListPropertyTearOff"
256 );
257
258 my %svgTypeWithWritablePropertiesNeedingTearOff = (
259 "SVGMatrix" => 1
260 ); 255 );
261 256
262 # Default license header 257 # Default license header
263 my $licenseHeader = <<EOF; 258 my $licenseHeader = <<EOF;
264 /* 259 /*
265 * Copyright (C) 2013 Google Inc. All rights reserved. 260 * Copyright (C) 2013 Google Inc. All rights reserved.
266 * 261 *
267 * Redistribution and use in source and binary forms, with or without 262 * Redistribution and use in source and binary forms, with or without
268 * modification, are permitted provided that the following conditions are 263 * modification, are permitted provided that the following conditions are
269 * met: 264 * met:
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after
552 END 547 END
553 } 548 }
554 for my $setReference (@{$interface->extendedAttributes->{"SetWrapperReferenc eTo"}}) { 549 for my $setReference (@{$interface->extendedAttributes->{"SetWrapperReferenc eTo"}}) {
555 my $setReferenceType = $setReference->type; 550 my $setReferenceType = $setReference->type;
556 my $setReferenceV8Type = "V8".$setReferenceType; 551 my $setReferenceV8Type = "V8".$setReferenceType;
557 552
558 my ($svgPropertyType, $svgListPropertyType, $svgNativeType) = GetSVGProp ertyTypes($setReferenceType); 553 my ($svgPropertyType, $svgListPropertyType, $svgNativeType) = GetSVGProp ertyTypes($setReferenceType);
559 if ($svgPropertyType) { 554 if ($svgPropertyType) {
560 $setReferenceType = $svgNativeType; 555 $setReferenceType = $svgNativeType;
561 } 556 }
557 my $setReferenceImplType = GetImplNameFromImplementedBy($setReferenceTyp e);
562 558
563 my $setReferenceName = $setReference->name; 559 my $setReferenceName = $setReference->name;
564 560
565 AddIncludesForType($setReferenceType); 561 AddIncludesForType($setReferenceType);
566 $code .= <<END; 562 $code .= <<END;
567 ${setReferenceType}* ${setReferenceName} = impl->${setReferenceName}(); 563 ${setReferenceImplType}* ${setReferenceName} = impl->${setReferenceName}();
568 if (${setReferenceName}) { 564 if (${setReferenceName}) {
569 if (!DOMDataStore::containsWrapper<${setReferenceV8Type}>(${setReference Name}, isolate)) 565 if (!DOMDataStore::containsWrapper<${setReferenceV8Type}>(${setReference Name}, isolate))
570 wrap(${setReferenceName}, creationContext, isolate); 566 wrap(${setReferenceName}, creationContext, isolate);
571 DOMDataStore::setWrapperReference<${setReferenceV8Type}>(wrapper, ${setR eferenceName}, isolate); 567 DOMDataStore::setWrapperReference<${setReferenceV8Type}>(wrapper, ${setR eferenceName}, isolate);
572 } 568 }
573 END 569 END
574 } 570 }
575 571
576 my $isReachableMethod = $interface->extendedAttributes->{"SetWrapperReferenc eFrom"}; 572 my $isReachableMethod = $interface->extendedAttributes->{"SetWrapperReferenc eFrom"};
577 if ($isReachableMethod) { 573 if ($isReachableMethod) {
(...skipping 29 matching lines...) Expand all
607 $svgNativeType = GetSVGTypeNeedingTearOff($implType); 603 $svgNativeType = GetSVGTypeNeedingTearOff($implType);
608 return ($svgPropertyType, $svgListPropertyType, $svgNativeType) if not $svgN ativeType; 604 return ($svgPropertyType, $svgListPropertyType, $svgNativeType) if not $svgN ativeType;
609 605
610 # Append space to avoid compilation errors when using PassRefPtr<$svgNative Type> 606 # Append space to avoid compilation errors when using PassRefPtr<$svgNative Type>
611 $svgNativeType = "$svgNativeType "; 607 $svgNativeType = "$svgNativeType ";
612 608
613 my $svgWrappedNativeType = GetSVGWrappedTypeNeedingTearOff($implType); 609 my $svgWrappedNativeType = GetSVGWrappedTypeNeedingTearOff($implType);
614 if ($svgNativeType =~ /SVGPropertyTearOff/) { 610 if ($svgNativeType =~ /SVGPropertyTearOff/) {
615 $svgPropertyType = $svgWrappedNativeType; 611 $svgPropertyType = $svgWrappedNativeType;
616 AddToHeaderIncludes("core/svg/properties/SVGAnimatedPropertyTearOff.h"); 612 AddToHeaderIncludes("core/svg/properties/SVGAnimatedPropertyTearOff.h");
617 } elsif ($svgNativeType =~ /SVGMatrixTearOff/) {
618 $svgPropertyType = $svgWrappedNativeType;
619 AddToHeaderIncludes("core/svg/properties/SVGMatrixTearOff.h");
620 AddToHeaderIncludes("core/svg/properties/SVGAnimatedPropertyTearOff.h");
621 } elsif ($svgNativeType =~ /SVGListPropertyTearOff/ or $svgNativeType =~ /SV GStaticListPropertyTearOff/ or $svgNativeType =~ /SVGTransformListPropertyTearOf f/) { 613 } elsif ($svgNativeType =~ /SVGListPropertyTearOff/ or $svgNativeType =~ /SV GStaticListPropertyTearOff/ or $svgNativeType =~ /SVGTransformListPropertyTearOf f/) {
622 $svgListPropertyType = $svgWrappedNativeType; 614 $svgListPropertyType = $svgWrappedNativeType;
623 AddToHeaderIncludes("core/svg/properties/SVGAnimatedListPropertyTearOff. h"); 615 AddToHeaderIncludes("core/svg/properties/SVGAnimatedListPropertyTearOff. h");
624 } elsif ($svgNativeType =~ /SVGPathSegListPropertyTearOff/) { 616 } elsif ($svgNativeType =~ /SVGPathSegListPropertyTearOff/) {
625 $svgListPropertyType = $svgWrappedNativeType; 617 $svgListPropertyType = $svgWrappedNativeType;
626 AddToHeaderIncludes("core/svg/properties/SVGPathSegListPropertyTearOff.h "); 618 AddToHeaderIncludes("core/svg/properties/SVGPathSegListPropertyTearOff.h ");
627 } 619 }
628 620
629 return ($svgPropertyType, $svgListPropertyType, $svgNativeType); 621 return ($svgPropertyType, $svgListPropertyType, $svgNativeType);
630 } 622 }
(...skipping 1083 matching lines...) Expand 10 before | Expand all | Expand 10 after
1714 if ($forMainWorldSuffix eq "ForMainWorld") { 1706 if ($forMainWorldSuffix eq "ForMainWorld") {
1715 $code .= " v8SetReturnValueForMainWorld(info, static_cast<$svgNat iveType*>($expression));\n"; 1707 $code .= " v8SetReturnValueForMainWorld(info, static_cast<$svgNat iveType*>($expression));\n";
1716 } else { 1708 } else {
1717 $code .= " v8SetReturnValueFast(info, static_cast<$svgNativeType* >($expression), imp);\n"; 1709 $code .= " v8SetReturnValueFast(info, static_cast<$svgNativeType* >($expression), imp);\n";
1718 } 1710 }
1719 } elsif (IsSVGTypeNeedingTearOff($attrType) and not $interfaceName =~ /List$ /) { 1711 } elsif (IsSVGTypeNeedingTearOff($attrType) and not $interfaceName =~ /List$ /) {
1720 AddToImplIncludes("V8$attrType.h"); 1712 AddToImplIncludes("V8$attrType.h");
1721 AddToImplIncludes("core/svg/properties/SVGPropertyTearOff.h"); 1713 AddToImplIncludes("core/svg/properties/SVGPropertyTearOff.h");
1722 my $tearOffType = GetSVGTypeNeedingTearOff($attrType); 1714 my $tearOffType = GetSVGTypeNeedingTearOff($attrType);
1723 my $wrappedValue; 1715 my $wrappedValue;
1724 if (IsSVGTypeWithWritablePropertiesNeedingTearOff($attrType) and not def ined $attribute->extendedAttributes->{"Immutable"}) { 1716 if ($tearOffType =~ /SVGStaticListPropertyTearOff/) {
1725 my $getter = $expression;
1726 $getter =~ s/imp->//;
1727 $getter =~ s/\(\)//;
1728
1729 my $updateMethod = "&${implClassName}::update" . FirstLetterToUpperC ase($getter);
1730
1731 my $selfIsTearOffType = IsSVGTypeNeedingTearOff($interfaceName);
1732 if ($selfIsTearOffType) {
1733 AddToImplIncludes("core/svg/properties/SVGMatrixTearOff.h");
1734 # FIXME: Don't create a new one everytime we access the matrix p roperty. This means, e.g, === won't work.
1735 $wrappedValue = "WTF::getPtr(SVGMatrixTearOff::create(wrapper, $ expression))";
1736 } else {
1737 AddToImplIncludes("core/svg/properties/SVGStaticPropertyTearOff. h");
1738 $tearOffType =~ s/SVGPropertyTearOff</SVGStaticPropertyTearOff<$ implClassName, /;
1739
1740 $wrappedValue = "WTF::getPtr(${tearOffType}::create(imp, $expres sion, $updateMethod))";
1741 }
1742 } elsif ($tearOffType =~ /SVGStaticListPropertyTearOff/) {
1743 $wrappedValue = "WTF::getPtr(${tearOffType}::create(imp, $expres sion))"; 1717 $wrappedValue = "WTF::getPtr(${tearOffType}::create(imp, $expres sion))";
1744 } elsif ($tearOffType =~ /SVG(Point|PathSeg)List/) { 1718 } elsif ($tearOffType =~ /SVG(Point|PathSeg)List/) {
1745 $wrappedValue = "WTF::getPtr($expression)"; 1719 $wrappedValue = "WTF::getPtr($expression)";
1746 } else { 1720 } else {
1747 $wrappedValue = "WTF::getPtr(${tearOffType}::create($expression) )"; 1721 $wrappedValue = "WTF::getPtr(${tearOffType}::create($expression) )";
1748 } 1722 }
1749 if ($forMainWorldSuffix eq "ForMainWorld") { 1723 if ($forMainWorldSuffix eq "ForMainWorld") {
1750 $code .= " v8SetReturnValueForMainWorld(info, $wrappedValue);\n"; 1724 $code .= " v8SetReturnValueForMainWorld(info, $wrappedValue);\n";
1751 } else { 1725 } else {
1752 $code .= " v8SetReturnValueFast(info, $wrappedValue, imp);\n"; 1726 $code .= " v8SetReturnValueFast(info, $wrappedValue, imp);\n";
(...skipping 3568 matching lines...) Expand 10 before | Expand all | Expand 10 after
5321 } 5295 }
5322 END 5296 END
5323 } else { 5297 } else {
5324 $code .= <<END; 5298 $code .= <<END;
5325 if (!$paramName) { 5299 if (!$paramName) {
5326 throwTypeError(ExceptionMessages::failedToExecute(\"$name\", \"$interfac eName\", \"parameter $humanFriendlyIndex is not of type '${ \$parameter->type }' .\"), info.GetIsolate()); 5300 throwTypeError(ExceptionMessages::failedToExecute(\"$name\", \"$interfac eName\", \"parameter $humanFriendlyIndex is not of type '${ \$parameter->type }' .\"), info.GetIsolate());
5327 return; 5301 return;
5328 } 5302 }
5329 END 5303 END
5330 } 5304 }
5331 } elsif ($parameter->type eq "SVGMatrix" and $interfaceName eq "SVGTrans formList") {
5332 push @arguments, "$paramName.get()";
5333 } elsif (IsNullableParameter($parameter)) { 5305 } elsif (IsNullableParameter($parameter)) {
5334 push @arguments, "${paramName}IsNull ? 0 : &$paramName"; 5306 push @arguments, "${paramName}IsNull ? 0 : &$paramName";
5335 } elsif (IsCallbackInterface($paramType) or $paramType eq "NodeFilter" o r $paramType eq "XPathNSResolver") { 5307 } elsif (IsCallbackInterface($paramType) or $paramType eq "NodeFilter" o r $paramType eq "XPathNSResolver") {
5336 push @arguments, "$paramName.release()"; 5308 push @arguments, "$paramName.release()";
5337 } else { 5309 } else {
5338 push @arguments, $paramName; 5310 push @arguments, $paramName;
5339 } 5311 }
5340 $index++; 5312 $index++;
5341 $humanFriendlyIndex = $index + 1; 5313 $humanFriendlyIndex = $index + 1;
5342 } 5314 }
(...skipping 678 matching lines...) Expand 10 before | Expand all | Expand 10 after
6021 } 5993 }
6022 5994
6023 sub IsSVGTypeNeedingTearOff 5995 sub IsSVGTypeNeedingTearOff
6024 { 5996 {
6025 my $type = shift; 5997 my $type = shift;
6026 5998
6027 return 1 if $svgTypeNeedingTearOff{$type}; 5999 return 1 if $svgTypeNeedingTearOff{$type};
6028 return 0; 6000 return 0;
6029 } 6001 }
6030 6002
6031 sub IsSVGTypeWithWritablePropertiesNeedingTearOff
6032 {
6033 my $type = shift;
6034
6035 return 1 if $svgTypeWithWritablePropertiesNeedingTearOff{$type};
6036 return 0;
6037 }
6038
6039 sub IsTypedArrayType 6003 sub IsTypedArrayType
6040 { 6004 {
6041 my $type = shift; 6005 my $type = shift;
6042 return 1 if $typedArrayHash{$type}; 6006 return 1 if $typedArrayHash{$type};
6043 return 0; 6007 return 0;
6044 } 6008 }
6045 6009
6046 sub IsWillBeGarbageCollectedType 6010 sub IsWillBeGarbageCollectedType
6047 { 6011 {
6048 my $interfaceName = shift; 6012 my $interfaceName = shift;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
6091 return $svgTypeNeedingTearOff if not $svgTypeNeedingTearOff; 6055 return $svgTypeNeedingTearOff if not $svgTypeNeedingTearOff;
6092 6056
6093 if ($svgTypeNeedingTearOff =~ /SVGPropertyTearOff/) { 6057 if ($svgTypeNeedingTearOff =~ /SVGPropertyTearOff/) {
6094 $svgTypeNeedingTearOff =~ s/SVGPropertyTearOff<//; 6058 $svgTypeNeedingTearOff =~ s/SVGPropertyTearOff<//;
6095 } elsif ($svgTypeNeedingTearOff =~ /SVGListPropertyTearOff/) { 6059 } elsif ($svgTypeNeedingTearOff =~ /SVGListPropertyTearOff/) {
6096 $svgTypeNeedingTearOff =~ s/SVGListPropertyTearOff<//; 6060 $svgTypeNeedingTearOff =~ s/SVGListPropertyTearOff<//;
6097 } elsif ($svgTypeNeedingTearOff =~ /SVGStaticListPropertyTearOff/) { 6061 } elsif ($svgTypeNeedingTearOff =~ /SVGStaticListPropertyTearOff/) {
6098 $svgTypeNeedingTearOff =~ s/SVGStaticListPropertyTearOff<//; 6062 $svgTypeNeedingTearOff =~ s/SVGStaticListPropertyTearOff<//;
6099 } elsif ($svgTypeNeedingTearOff =~ /SVGTransformListPropertyTearOff/) { 6063 } elsif ($svgTypeNeedingTearOff =~ /SVGTransformListPropertyTearOff/) {
6100 $svgTypeNeedingTearOff =~ s/SVGTransformListPropertyTearOff<//; 6064 $svgTypeNeedingTearOff =~ s/SVGTransformListPropertyTearOff<//;
6101 } elsif ($svgTypeNeedingTearOff =~ /SVGMatrixTearOff/) {
6102 $svgTypeNeedingTearOff = 'SVGMatrix';
6103 } 6065 }
6104 6066
6105 $svgTypeNeedingTearOff =~ s/>//; 6067 $svgTypeNeedingTearOff =~ s/>//;
6106 return $svgTypeNeedingTearOff; 6068 return $svgTypeNeedingTearOff;
6107 } 6069 }
6108 6070
6109 sub IsSVGAnimatedType 6071 sub IsSVGAnimatedType
6110 { 6072 {
6111 my $type = shift; 6073 my $type = shift;
6112 6074
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after
6479 if ($parameter->type eq "SerializedScriptValue") { 6441 if ($parameter->type eq "SerializedScriptValue") {
6480 return 1; 6442 return 1;
6481 } elsif (IsIntegerType($parameter->type)) { 6443 } elsif (IsIntegerType($parameter->type)) {
6482 return 1; 6444 return 1;
6483 } 6445 }
6484 } 6446 }
6485 return 0; 6447 return 0;
6486 } 6448 }
6487 6449
6488 1; 6450 1;
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698