Chromium Code Reviews| Index: Source/bindings/scripts/CodeGeneratorV8.pm |
| diff --git a/Source/bindings/scripts/CodeGeneratorV8.pm b/Source/bindings/scripts/CodeGeneratorV8.pm |
| index 6ad557e388ebc718b0d9dba46808821378e181e8..2eed11ad2034cfe546a28b0f084fb3134c00ab49 100644 |
| --- a/Source/bindings/scripts/CodeGeneratorV8.pm |
| +++ b/Source/bindings/scripts/CodeGeneratorV8.pm |
| @@ -564,20 +564,12 @@ sub GetSpecialAccessorFunctionForType |
| my $special = shift; |
| my $type = shift; |
|
kojih
2013/05/23 05:14:26
quit searching all parents for special method
|
| - my @interfaces = ($interface); |
| - ForAllParents($interface, sub { |
| - my $currentInterface = shift; |
| - push(@interfaces, $currentInterface); |
| - }); |
| - |
| - foreach my $currentInterface (@interfaces) { |
| - foreach my $function (@{$currentInterface->functions}) { |
| - my $specials = $function->signature->specials; |
| - my $specialExists = grep { $_ eq $special } @$specials; |
| - my $parameters = $function->parameters; |
| - if ($specialExists and scalar(@$parameters) == 1 and $parameters->[0]->type eq $type) { |
| - return $function; |
| - } |
| + foreach my $function (@{$interface->functions}) { |
| + my $specials = $function->signature->specials; |
| + my $specialExists = grep { $_ eq $special } @$specials; |
| + my $parameters = $function->parameters; |
| + if ($specialExists and scalar(@$parameters) == 1 and $parameters->[0]->type eq $type) { |
| + return $function; |
| } |
| } |
| @@ -3039,8 +3031,10 @@ sub GenerateIsNullExpression |
| } |
| if (IsRefPtrType($type)) { |
| return "!${variableName}"; |
| - } else { |
| + } elsif ($type eq "DOMString") { |
| return "${variableName}.isNull()"; |
| + } else { |
| + return ""; |
|
kojih
2013/05/23 05:14:26
primitive case
|
| } |
| } |
| @@ -3206,7 +3200,10 @@ sub GenerateMethodCall |
| my $unionMemberType = $returnType->unionMemberTypes->[$i]; |
| my $nativeType = GetNativeType($unionMemberType); |
| my $unionMemberVariable = $returnName . $i; |
| + my $unionMemberEnabledVariable = $returnName . $i . "Enabled"; |
| + $code .= " bool ${unionMemberEnabledVariable} = false;\n"; |
| $code .= " ${nativeType} ${unionMemberVariable};\n"; |
| + push @extraArguments, $unionMemberEnabledVariable; |
| push @extraArguments, $unionMemberVariable; |
| } |
| push @arguments, @extraArguments; |
| @@ -3237,7 +3234,7 @@ sub GenerateImplementationNamedPropertyGetter |
| my $code = "v8::Handle<v8::Value> ${v8ClassName}::namedPropertyGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)\n"; |
| $code .= "{\n"; |
| - if (!$namedGetterFunction->signature->extendedAttributes->{"DoNotCheckJSProperty"}) { |
| + if (!$namedGetterFunction->signature->extendedAttributes->{"OverrideBuiltins"}) { |
| $code .= " if (!info.Holder()->GetRealNamedPropertyInPrototypeChain(name).IsEmpty())\n"; |
| $code .= " return v8Undefined();\n"; |
| $code .= " if (info.Holder()->HasRealNamedCallbackProperty(name))\n"; |
| @@ -4739,12 +4736,14 @@ sub NativeToJSValue |
| my $unionMemberType = $types->[$i]; |
| my $unionMemberNumber = $i + 1; |
| my $unionMemberVariable = $nativeValue . $i; |
| + my $unionMemberEnabledVariable = $nativeValue . $i . "Enabled"; |
| my $unionMemberNativeValue = $unionMemberVariable; |
| $unionMemberNativeValue .= ".release()" if (IsRefPtrType($unionMemberType)); |
| my $returnJSValueCode = NativeToJSValue($unionMemberType, $extendedAttributes, $unionMemberNativeValue, $indent . " ", $receiver, $getCreationContext, $getIsolate, $getHolderContainer, $getScriptWrappable, $returnHandleType, $forMainWorldSuffix); |
| - my $isNotNull = "!" . GenerateIsNullExpression($unionMemberType, $unionMemberVariable); |
| + my $isNotNull = GenerateIsNullExpression($unionMemberType, $unionMemberVariable); |
| + $isNotNull = " && !" . $isNotNull if $isNotNull; |
| my $code = ""; |
| - $code .= "${indent}if (${isNotNull})\n"; |
| + $code .= "${indent}if (${unionMemberEnabledVariable}${isNotNull})\n"; |
| $code .= "${returnJSValueCode}"; |
| push @codes, $code; |
| } |