| Index: Source/bindings/scripts/CodeGeneratorV8.pm
|
| diff --git a/Source/bindings/scripts/CodeGeneratorV8.pm b/Source/bindings/scripts/CodeGeneratorV8.pm
|
| index 70759dc3cce7965c30b7d7c465da65fc24ee5483..8bc41735237d8c625cf46acdef74b99906a1343d 100644
|
| --- a/Source/bindings/scripts/CodeGeneratorV8.pm
|
| +++ b/Source/bindings/scripts/CodeGeneratorV8.pm
|
| @@ -617,9 +617,6 @@ sub GenerateHeader
|
| my $implClassName = GetImplName($interface);
|
| my $v8ClassName = GetV8ClassName($interface);
|
|
|
| - # Copy contents of parent interfaces except the first parent.
|
| - my @parents;
|
| - AddMethodsConstantsAndAttributesFromParentInterfaces($interface, \@parents);
|
| LinkOverloadedFunctions($interface);
|
|
|
| # Ensure the IsDOMNodeType function is in sync.
|
| @@ -627,11 +624,8 @@ sub GenerateHeader
|
|
|
| my ($svgPropertyType, $svgListPropertyType, $svgNativeType) = GetSVGPropertyTypes($interfaceName);
|
|
|
| - if ($v8ClassName !~ /SVG/) {
|
| - for my $parent (@{$interface->parents}) {
|
| - AddToHeaderIncludes("V8${parent}.h");
|
| - }
|
| - }
|
| + my $parentInterface = $interface->parent;
|
| + AddToHeaderIncludes("V8${parentInterface}.h") if $parentInterface;
|
| AddToHeaderIncludes("bindings/v8/WrapperTypeInfo.h");
|
| AddToHeaderIncludes("bindings/v8/V8Binding.h");
|
| AddToHeaderIncludes("bindings/v8/V8DOMWrapper.h");
|
| @@ -823,7 +817,7 @@ END
|
|
|
| my $customWrap = $interface->extendedAttributes->{"CustomToV8"};
|
| if ($noToV8) {
|
| - die "Can't suppress toV8 for subclass\n" if @parents;
|
| + die "Can't suppress toV8 for subclass\n" if $interface->parent;
|
| } elsif ($noWrap) {
|
| die "Must have custom toV8\n" if !$customWrap;
|
| $header{nameSpaceWebCore}->add(<<END);
|
| @@ -2664,7 +2658,8 @@ bool fill${implClassName}Init(${implClassName}Init& eventInit, const Dictionary&
|
| {
|
| END
|
|
|
| - foreach my $interfaceBase (@{$interface->parents}) {
|
| + if ($interface->parent) {
|
| + my $interfaceBase = $interface->parent;
|
| $code .= <<END;
|
| if (!fill${interfaceBase}Init(eventInit, options))
|
| return false;
|
| @@ -3861,12 +3856,11 @@ sub GenerateImplementation
|
| # Find the super descriptor.
|
| my $parentClass = "";
|
| my $parentClassTemplate = "";
|
| - foreach (@{$interface->parents}) {
|
| - my $parent = $_;
|
| + if ($interface->parent) {
|
| + my $parent = $interface->parent;
|
| AddToImplIncludes("V8${parent}.h");
|
| $parentClass = "V8" . $parent;
|
| $parentClassTemplate = $parentClass . "::GetTemplate(isolate, currentWorldType)";
|
| - last;
|
| }
|
|
|
| my $parentClassInfo = $parentClass ? "&${parentClass}::info" : "0";
|
| @@ -4691,8 +4685,8 @@ sub BaseInterfaceName
|
| {
|
| my $interface = shift;
|
|
|
| - while (@{$interface->parents}) {
|
| - $interface = ParseInterface(@{$interface->parents}[0]);
|
| + while ($interface->parent) {
|
| + $interface = ParseInterface($interface->parent);
|
| }
|
|
|
| return $interface->name;
|
| @@ -5563,12 +5557,10 @@ sub ForAllParents
|
| $recurse = sub {
|
| my $currentInterface = shift;
|
|
|
| - for (@{$currentInterface->parents}) {
|
| - my $interfaceName = $_;
|
| - my $parentInterface = ParseInterface($interfaceName);
|
| -
|
| + if ($currentInterface->parent) {
|
| + my $parentInterface = ParseInterface($currentInterface->parent);
|
| if ($beforeRecursion) {
|
| - &$beforeRecursion($parentInterface) eq 'prune' and next;
|
| + &$beforeRecursion($parentInterface) eq 'prune' and return;
|
| }
|
| &$recurse($parentInterface);
|
| &$afterRecursion($parentInterface) if $afterRecursion;
|
| @@ -5578,45 +5570,6 @@ sub ForAllParents
|
| &$recurse($interface);
|
| }
|
|
|
| -sub AddMethodsConstantsAndAttributesFromParentInterfaces
|
| -{
|
| - # Add to $interface all of its inherited interface members, except for those
|
| - # inherited through $interface's first listed parent. If an array reference
|
| - # is passed in as $parents, the names of all ancestor interfaces visited
|
| - # will be appended to the array. The names of $interface's first listed parent
|
| - # and its ancestors will also be appended to $parents.
|
| -
|
| - my $interface = shift;
|
| - my $parents = shift;
|
| -
|
| - my $first = 1;
|
| - ForAllParents($interface, sub {
|
| - my $currentInterface = shift;
|
| -
|
| - if ($first) {
|
| - # Ignore first parent class, already handled by the generation itself.
|
| - $first = 0;
|
| -
|
| - # Just collect the names of the direct ancestor interfaces,
|
| - # if necessary.
|
| - push(@$parents, $currentInterface->name);
|
| - ForAllParents($currentInterface, sub {
|
| - my $currentInterface = shift;
|
| - push(@$parents, $currentInterface->name);
|
| - });
|
| - return 'prune';
|
| - }
|
| -
|
| - # Collect the name of this additional parent.
|
| - push(@$parents, $currentInterface->name) if $parents;
|
| -
|
| - # Add this parent's members to $interface.
|
| - push(@{$interface->constants}, @{$currentInterface->constants});
|
| - push(@{$interface->functions}, @{$currentInterface->functions});
|
| - push(@{$interface->attributes}, @{$currentInterface->attributes});
|
| - });
|
| -}
|
| -
|
| sub FindSuperMethod
|
| {
|
| my ($interface, $functionName) = @_;
|
|
|