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

Unified Diff: Source/WebCore/bindings/dart/gyp/scripts/CodeGeneratorDart.pm

Issue 9231022: WebGL support. (Closed) Base URL: svn://svn.chromium.org/multivm/trunk/webkit
Patch Set: Review feedback. Created 8 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: Source/WebCore/bindings/dart/gyp/scripts/CodeGeneratorDart.pm
diff --git a/Source/WebCore/bindings/dart/gyp/scripts/CodeGeneratorDart.pm b/Source/WebCore/bindings/dart/gyp/scripts/CodeGeneratorDart.pm
index ccf7cef64b2008fcdf7e8ba7c2d9ff141ad47c0a..5581f00b55f2636b3d5c0f6651896b8b751fa960 100644
--- a/Source/WebCore/bindings/dart/gyp/scripts/CodeGeneratorDart.pm
+++ b/Source/WebCore/bindings/dart/gyp/scripts/CodeGeneratorDart.pm
@@ -108,6 +108,25 @@ sub GenerateModule
my ($object, $dataNode) = @_;
}
+my %overrideConstructorParameters = (
+ "Float32Array" => 3,
+ "Float64Array" => 3,
+ "Int8Array" => 3,
+ "Int16Array" => 3,
+ "Int32Array" => 3,
+ "Uint8Array" => 3,
+ "Uint16Array" => 3,
+ "Uint32Array" => 3,
+);
+
+sub ConstructorParameters
antonm 2012/01/19 14:05:49 please, provide less ambiguous name: ConstructorPa
Nikolay 2012/01/19 15:08:46 Done.
+{
+ my ($dataNode) = @_;
+ return $overrideConstructorParameters{$dataNode->name} if (exists $overrideConstructorParameters{$dataNode->name});
+ return $dataNode->extendedAttributes->{ConstructorParameters} if (exists $dataNode->extendedAttributes->{ConstructorParameters});
+ return 0;
+}
+
sub GenerateInterface
{
my ($object, $dataNode, $defines) = @_;
@@ -212,17 +231,19 @@ sub HasOptionalParameters
}
}
-sub HasCustomConstructor
+sub CanBeConstructed
{
my ($dataNode) = @_;
- # FIXME: switch to using CanBeConstructed attribute.
- return 1 if $dataNode->name eq "FileReader";
- return 1 if $dataNode->name eq "XMLHttpRequest";
- return 1 if $dataNode->name eq "WebKitCSSMatrix";
- return 1 if $dataNode->name eq "WebKitPoint";
+ return
+ $dataNode->extendedAttributes->{CanBeConstructed} || HasCustomConstructor($dataNode);
+}
- return 0;
+sub HasCustomConstructor
+{
+ my ($dataNode) = @_;
+
+ return $dataNode->extendedAttributes->{CustomConstructor} && not ($dataNode->name =~ "Event");
}
sub IsParameterOptionalInWebKit
@@ -377,6 +398,7 @@ sub IDLTypeToW3C
my %idlTypeToDart = (
"any" => "Object",
+ "any[]" => "List",
"boolean" => "bool",
"custom" => "Object",
"object" => "Object",
@@ -1350,9 +1372,9 @@ my %excludedInterfaces = (
"SVGZoomAndPan" => 1,
);
-sub ListLike
+sub ListLikeWithBase
{
- my ($elementType, $needsAuxiliaryAccessors) = @_;
+ my ($elementType, $baseClass, $needsAuxiliaryAccessors) = @_;
my @auxiliaryMethods = ();
if ($needsAuxiliaryAccessors) {
@@ -1362,11 +1384,25 @@ sub ListLike
return IDLTypeInfoStruct->new(
additionalInterfaces => ["List<$elementType>"],
- superClass => "ListBase<$elementType>",
+ superClass => "$baseClass",
auxilaryMethods => \@auxiliaryMethods
);
}
+sub ListLike
+{
+ my ($elementType, $needsAuxiliaryAccessors) = @_;
+
+ return ListLikeWithBase($elementType, "ListBase<$elementType>", $needsAuxiliaryAccessors);
+}
+
+sub ArrayBufferLike
+{
+ my ($elementType, $needsAuxiliaryAccessors) = @_;
+
+ return ListLikeWithBase($elementType, "ArrayBufferViewImplementation", $needsAuxiliaryAccessors);
+}
+
sub MapLike
{
# FIXME: most probably we need to deduce more types using hints like
@@ -1395,6 +1431,15 @@ my %idlTypeInfoOverrides = (
"HTMLCollection" => ListLike("Node"),
"NodeList" => ListLike("Node"),
"StyleSheetList" => ListLike("StyleSheet"),
+ "ArrayBufferView" => ListLikeWithBase("num", "ListBase<num>"),
+ "Float32Array" => ArrayBufferLike("double", 1),
+ "Float64Array" => ArrayBufferLike("double", 1),
+ "Int8Array" => ArrayBufferLike("int", 1),
+ "Int16Array" => ArrayBufferLike("int", 1),
+ "Int32Array" => ArrayBufferLike("int", 1),
+ "Uint8Array" => ArrayBufferLike("int", 1),
+ "Uint16Array" => ArrayBufferLike("int", 1),
+ "Uint32Array" => ArrayBufferLike("int", 1),
);
# FIXME: turn into the single IDL type info registry.
@@ -1436,7 +1481,7 @@ sub GenerateSource
# Build default clause if any.
my $defaultClause = "";
- if (HasCustomConstructor($dataNode)) {
+ if (CanBeConstructed($dataNode)) {
$defaultClause = " default ${w3cInterfaceName}Implementation";
push(@customCallbackDeclarations, GenerateCustomCallbackDeclaration("constructorCallback"));
}
@@ -1487,7 +1532,7 @@ sub GenerateSource
}
if (HasCustomConstructor($dataNode)) {
- my $parameterCount = $dataNode->extendedAttributes->{"ConstructorParameters"} || 0;
+ my $parameterCount = ConstructorParameters($dataNode);
my $descriptor = CreateFunctionNativeDescriptor($interfaceName, "constructor", 1 + $parameterCount);
my $nativeId = $descriptor->nativeId;
my $parameters = DartAnonymousNamedOptionalParameters($parameterCount);

Powered by Google App Engine
This is Rietveld 408576698