| Index: Source/bindings/scripts/CodeGeneratorV8.pm
|
| diff --git a/Source/bindings/scripts/CodeGeneratorV8.pm b/Source/bindings/scripts/CodeGeneratorV8.pm
|
| index 5b6bd6ee27adf74afb8f8c4f3c03b7d7652ab65f..7c90f2852aadf69643ac4a6d15b5878c94b3750c 100644
|
| --- a/Source/bindings/scripts/CodeGeneratorV8.pm
|
| +++ b/Source/bindings/scripts/CodeGeneratorV8.pm
|
| @@ -145,7 +145,7 @@ my %header;
|
| # Conditional ... #if FEATURE ... #endif (to be removed soon)
|
| # Includes
|
| # NameSpaceWebCore
|
| -# NameSpaceInternal ... namespace ${interfaceName}V8Internal in case of non-callback
|
| +# NameSpaceInternal ... namespace ${implClassName}V8Internal in case of non-callback
|
| my %implementation;
|
|
|
| my %primitiveTypeHash = ( "boolean" => 1,
|
| @@ -265,13 +265,13 @@ sub IDLFileForInterface
|
| sub HeaderFileForInterface
|
| {
|
| my $interfaceName = shift;
|
| + my $implClassName = shift || $interfaceName;
|
|
|
| my $idlFilename = IDLFileForInterface($interfaceName)
|
| or die("Could NOT find IDL file for interface \"$interfaceName\" $!\n");
|
|
|
| - $idlFilename = "bindings/" . File::Spec->abs2rel($idlFilename, $sourceRoot);
|
| - $idlFilename =~ s/idl$/h/;
|
| - return $idlFilename;
|
| + my $idlRelPath= "bindings/" . File::Spec->abs2rel($idlFilename, $sourceRoot);
|
| + return dirname($idlRelPath) . "/" . $implClassName . ".h";
|
| }
|
|
|
| sub ParseInterface
|
| @@ -310,10 +310,9 @@ sub GenerateInterface
|
| my $interface = shift;
|
|
|
| %enumTypeHash = map { $_->name => $_->values } @{$idlDocument->enumerations};
|
| - my $interfaceName = $interface->name;
|
| - my $v8InterfaceName = "V8" . $interface->name;
|
| - my $defineName = $v8InterfaceName . "_h";
|
| - my $internalNamespace = "${interfaceName}V8Internal";
|
| + my $v8ClassName = GetV8ClassName($interface);
|
| + my $defineName = $v8ClassName . "_h";
|
| + my $internalNamespace = GetImplClassName($interface) . "V8Internal";
|
|
|
| my $conditionalString = GenerateConditionalString($interface);
|
| my $conditionalIf = "";
|
| @@ -367,7 +366,7 @@ sub GenerateInterface
|
| # - Add default header template
|
| $implementation{root}->addHeader($headerTemplate);
|
| $implementation{root}->addHeader("\n#include \"config.h\"");
|
| - $implementation{includes}->add("#include \"${v8InterfaceName}.h\"\n\n");
|
| + $implementation{includes}->add("#include \"${v8ClassName}.h\"\n\n");
|
|
|
| # Start actual generation
|
| if ($interface->isCallback) {
|
| @@ -409,8 +408,9 @@ sub AddToHeaderIncludes
|
|
|
| sub AddInterfaceToImplIncludes
|
| {
|
| - my $interface = shift;
|
| - my $include = HeaderFileForInterface($interface);
|
| + my $interfaceName = shift;
|
| +
|
| + my $include = HeaderFileForInterface($interfaceName);
|
|
|
| AddToImplIncludes($include);
|
| }
|
| @@ -488,17 +488,18 @@ sub GetCustomIsReachable
|
| sub GenerateOpaqueRootForGC
|
| {
|
| my $interface = shift;
|
| - my $interfaceName = $interface->name;
|
| + my $implClassName = GetImplClassName($interface);
|
| + my $v8ClassName = GetV8ClassName($interface);
|
|
|
| if (GetCustomIsReachable($interface)) {
|
| return;
|
| }
|
|
|
| my $code = <<END;
|
| -void* V8${interfaceName}::opaqueRootForGC(void* object, v8::Persistent<v8::Object> wrapper, v8::Isolate* isolate)
|
| +void* ${v8ClassName}::opaqueRootForGC(void* object, v8::Persistent<v8::Object> wrapper, v8::Isolate* isolate)
|
| {
|
| ASSERT(!wrapper.IsIndependent(isolate));
|
| - ${interfaceName}* impl = static_cast<${interfaceName}*>(object);
|
| + ${implClassName}* impl = static_cast<${implClassName}*>(object);
|
| END
|
| if (GetGenerateIsReachable($interface) eq "ImplDocument" ||
|
| GetGenerateIsReachable($interface) eq "ImplElementRoot" ||
|
| @@ -618,7 +619,8 @@ sub GenerateHeader
|
| my $interface = shift;
|
|
|
| my $interfaceName = $interface->name;
|
| - my $v8InterfaceName = "V8$interfaceName";
|
| + my $implClassName = GetImplClassName($interface);
|
| + my $v8ClassName = GetV8ClassName($interface);
|
|
|
| # Copy contents of parent interfaces except the first parent.
|
| my @parents;
|
| @@ -628,7 +630,7 @@ sub GenerateHeader
|
| # Ensure the IsDOMNodeType function is in sync.
|
| die("IsDOMNodeType is out of date with respect to $interfaceName") if IsDOMNodeType($interfaceName) != InheritsInterface($interface, "Node");
|
|
|
| - my $hasDependentLifetime = $interface->extendedAttributes->{"DependentLifetime"} || InheritsExtendedAttribute($interface, "ActiveDOMObject") || GetGenerateIsReachable($interface) || $v8InterfaceName =~ /SVG/;
|
| + my $hasDependentLifetime = $interface->extendedAttributes->{"DependentLifetime"} || InheritsExtendedAttribute($interface, "ActiveDOMObject") || GetGenerateIsReachable($interface) || $v8ClassName =~ /SVG/;
|
| if (!$hasDependentLifetime) {
|
| foreach (@{$interface->parents}) {
|
| my $parent = $_;
|
| @@ -643,7 +645,7 @@ sub GenerateHeader
|
| AddToHeaderIncludes("wtf/HashMap.h");
|
| AddToHeaderIncludes("wtf/text/StringHash.h");
|
|
|
| - my $headerClassInclude = GetHeaderClassInclude($interfaceName);
|
| + my $headerClassInclude = GetHeaderClassInclude($interfaceName, $implClassName);
|
| AddToHeaderIncludes($headerClassInclude) if $headerClassInclude;
|
|
|
| my ($svgPropertyType, $svgListPropertyType, $svgNativeType) = GetSVGPropertyTypes($interfaceName);
|
| @@ -677,7 +679,7 @@ public:
|
| END
|
| }
|
|
|
| - $header{class}->addHeader("class $v8InterfaceName {");
|
| + $header{class}->addHeader("class $v8ClassName {");
|
| $header{class}->addFooter("};");
|
|
|
| my $code = "";
|
| @@ -861,7 +863,7 @@ END
|
| template<>
|
| class WrapperTypeTraits<${nativeType} > {
|
| public:
|
| - static WrapperTypeInfo* info() { return &${v8InterfaceName}::info; }
|
| + static WrapperTypeInfo* info() { return &${v8ClassName}::info; }
|
| };
|
|
|
| END
|
| @@ -890,10 +892,10 @@ inline v8::Handle<v8::Value> toV8FastForMainWorld(${nativeType}* impl, const Hol
|
| END
|
| } else {
|
|
|
| - my $createWrapperCall = $customWrap ? "${v8InterfaceName}::wrap" : "${v8InterfaceName}::createWrapper";
|
| + my $createWrapperCall = $customWrap ? "${v8ClassName}::wrap" : "${v8ClassName}::createWrapper";
|
| my $returningWrapper = $interface->extendedAttributes->{"WrapAsFunction"} ? "V8DOMWrapper::toFunction(wrapper)" : "wrapper";
|
| my $returningCreatedWrapperOpening = $interface->extendedAttributes->{"WrapAsFunction"} ? "V8DOMWrapper::toFunction(" : "";
|
| - my $returningCreatedWrapperClosing = $interface->extendedAttributes->{"WrapAsFunction"} ? ", \"${interfaceName}\", isolate)" : "";
|
| + my $returningCreatedWrapperClosing = $interface->extendedAttributes->{"WrapAsFunction"} ? ", \"${implClassName}\", isolate)" : "";
|
|
|
| if ($customWrap) {
|
| $header{nameSpaceWebCore}->add(<<END);
|
| @@ -911,7 +913,7 @@ inline v8::Handle<v8::Object> wrap(${nativeType}* impl, v8::Handle<v8::Object> c
|
| const WrapperTypeInfo* actualInfo = ScriptWrappable::getTypeInfoFromObject(impl);
|
| // Might be a XXXConstructor::info instead of an XXX::info. These will both have
|
| // the same object de-ref functions, though, so use that as the basis of the check.
|
| - RELEASE_ASSERT(actualInfo->derefObjectFunction == ${v8InterfaceName}::info.derefObjectFunction);
|
| + RELEASE_ASSERT(actualInfo->derefObjectFunction == ${v8ClassName}::info.derefObjectFunction);
|
| }
|
| return ${returningCreatedWrapperOpening}$createWrapperCall(impl, creationContext, isolate)${returningCreatedWrapperClosing};
|
| }
|
| @@ -989,7 +991,7 @@ inline v8::Handle<v8::Value> toV8(PassRefPtr< ${nativeType} > impl, v8::Handle<v
|
| END
|
|
|
| if (IsConstructorTemplate($interface, "Event")) {
|
| - $header{nameSpaceWebCore}->add("bool fill${interfaceName}Init(${interfaceName}Init&, const Dictionary&);\n\n");
|
| + $header{nameSpaceWebCore}->add("bool fill${implClassName}Init(${implClassName}Init&, const Dictionary&);\n\n");
|
| }
|
| }
|
|
|
| @@ -1008,14 +1010,16 @@ sub GetInternalFields
|
|
|
| sub GetHeaderClassInclude
|
| {
|
| - my $v8InterfaceName = shift;
|
| - if ($v8InterfaceName =~ /SVGPathSeg/) {
|
| - $v8InterfaceName =~ s/Abs|Rel//;
|
| - return "core/svg/${v8InterfaceName}.h";
|
| + my $interfaceName = shift;
|
| + my $implClassName = shift;
|
| +
|
| + if ($interfaceName =~ /SVGPathSeg/) {
|
| + $interfaceName =~ s/Abs|Rel//;
|
| + return "core/svg/${interfaceName}.h";
|
| }
|
| - return "wtf/${v8InterfaceName}.h" if IsTypedArrayType($v8InterfaceName);
|
| - return "" if (SkipIncludeHeader($v8InterfaceName));
|
| - return HeaderFileForInterface($v8InterfaceName);
|
| + return "wtf/${interfaceName}.h" if IsTypedArrayType($interfaceName);
|
| + return "" if (SkipIncludeHeader($interfaceName));
|
| + return HeaderFileForInterface($interfaceName, $implClassName);
|
| }
|
|
|
| sub GenerateHeaderCustomInternalFieldIndices
|
| @@ -1037,7 +1041,6 @@ END
|
| sub GenerateHeaderNamedAndIndexedPropertyAccessors
|
| {
|
| my $interface = shift;
|
| - my $interfaceName = $interface->name;
|
| my $hasIndexedGetter = GetIndexedGetterFunction($interface) || $interface->extendedAttributes->{"CustomIndexedGetter"};
|
| my $hasCustomIndexedSetter = $interface->extendedAttributes->{"CustomIndexedSetter"};
|
| my $hasCustomNamedGetter = GetNamedGetterFunction($interface) || $interface->extendedAttributes->{"CustomNamedGetter"};
|
| @@ -1157,21 +1160,34 @@ sub IsReadonly
|
| return $attribute->isReadOnly && !$attrExt->{"Replaceable"};
|
| }
|
|
|
| +sub GetV8ClassName
|
| +{
|
| + my $interface = shift;
|
| + return "V8" . $interface->name;
|
| +}
|
| +
|
| +sub GetImplClassName
|
| +{
|
| + my $interface = shift;
|
| + return $interface->extendedAttributes->{"ImplementedAs"} || $interface->name;
|
| +}
|
| +
|
| sub GenerateDomainSafeFunctionGetter
|
| {
|
| my $function = shift;
|
| - my $interfaceName = shift;
|
| + my $interface = shift;
|
|
|
| - my $v8InterfaceName = "V8" . $interfaceName;
|
| + my $implClassName = GetImplClassName($interface);
|
| + my $v8ClassName = GetV8ClassName($interface);
|
| my $funcName = $function->signature->name;
|
|
|
| my $functionLength = GetFunctionLength($function);
|
| - my $signature = "v8::Signature::New(V8PerIsolateData::from(info.GetIsolate())->rawTemplate(&" . $v8InterfaceName . "::info, currentWorldType))";
|
| + my $signature = "v8::Signature::New(V8PerIsolateData::from(info.GetIsolate())->rawTemplate(&" . $v8ClassName . "::info, currentWorldType))";
|
| if ($function->signature->extendedAttributes->{"DoNotCheckSignature"}) {
|
| $signature = "v8::Local<v8::Signature>()";
|
| }
|
|
|
| - my $newTemplateParams = "${interfaceName}V8Internal::${funcName}MethodCallback, v8Undefined(), $signature";
|
| + my $newTemplateParams = "${implClassName}V8Internal::${funcName}MethodCallback, v8Undefined(), $signature";
|
|
|
| AddToImplIncludes("core/page/Frame.h");
|
| AddToImplIncludes("bindings/v8/BindingSecurity.h");
|
| @@ -1184,13 +1200,13 @@ static v8::Handle<v8::Value> ${funcName}AttrGetter(v8::Local<v8::String> name, c
|
| V8PerIsolateData* data = V8PerIsolateData::from(info.GetIsolate());
|
| v8::Persistent<v8::FunctionTemplate> privateTemplate = data->privateTemplate(currentWorldType, &privateTemplateUniqueKey, $newTemplateParams, $functionLength);
|
|
|
| - v8::Handle<v8::Object> holder = info.This()->FindInstanceInPrototypeChain(${v8InterfaceName}::GetTemplate(info.GetIsolate(), currentWorldType));
|
| + v8::Handle<v8::Object> holder = info.This()->FindInstanceInPrototypeChain(${v8ClassName}::GetTemplate(info.GetIsolate(), currentWorldType));
|
| if (holder.IsEmpty()) {
|
| // can only reach here by 'object.__proto__.func', and it should passed
|
| // domain security check already
|
| return privateTemplate->GetFunction();
|
| }
|
| - ${interfaceName}* imp = ${v8InterfaceName}::toNative(holder);
|
| + ${implClassName}* imp = ${v8ClassName}::toNative(holder);
|
| if (!BindingSecurity::shouldAllowAccessToFrame(imp->frame(), DoNotReportSecurityError)) {
|
| static const char* sharedTemplateUniqueKey = "${funcName}SharedTemplate";
|
| v8::Persistent<v8::FunctionTemplate> sharedTemplate = data->privateTemplate(currentWorldType, &sharedTemplateUniqueKey, $newTemplateParams, $functionLength);
|
| @@ -1208,7 +1224,7 @@ END
|
| $implementation{nameSpaceInternal}->add(<<END);
|
| static v8::Handle<v8::Value> ${funcName}AttrGetterCallback(v8::Local<v8::String> name, const v8::AccessorInfo& info)
|
| {
|
| - return ${interfaceName}V8Internal::${funcName}AttrGetter(name, info);
|
| + return ${implClassName}V8Internal::${funcName}AttrGetter(name, info);
|
| }
|
|
|
| END
|
| @@ -1216,17 +1232,19 @@ END
|
|
|
| sub GenerateDomainSafeFunctionSetter
|
| {
|
| - my $interfaceName = shift;
|
| - my $v8InterfaceName = "V8" . $interfaceName;
|
| + my $interface = shift;
|
| +
|
| + my $implClassName = GetImplClassName($interface);
|
| + my $v8ClassName = GetV8ClassName($interface);
|
|
|
| AddToImplIncludes("bindings/v8/BindingSecurity.h");
|
| $implementation{nameSpaceInternal}->add(<<END);
|
| -static void ${interfaceName}DomainSafeFunctionSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info)
|
| +static void ${implClassName}DomainSafeFunctionSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info)
|
| {
|
| - v8::Handle<v8::Object> holder = info.This()->FindInstanceInPrototypeChain(${v8InterfaceName}::GetTemplate(info.GetIsolate(), worldType(info.GetIsolate())));
|
| + v8::Handle<v8::Object> holder = info.This()->FindInstanceInPrototypeChain(${v8ClassName}::GetTemplate(info.GetIsolate(), worldType(info.GetIsolate())));
|
| if (holder.IsEmpty())
|
| return;
|
| - ${interfaceName}* imp = ${v8InterfaceName}::toNative(holder);
|
| + ${implClassName}* imp = ${v8ClassName}::toNative(holder);
|
| if (!BindingSecurity::shouldAllowAccessToFrame(imp->frame()))
|
| return;
|
|
|
| @@ -1239,10 +1257,10 @@ END
|
| sub GenerateConstructorGetter
|
| {
|
| my $interface = shift;
|
| - my $interfaceName = $interface->name;
|
| + my $implClassName = GetImplClassName($interface);
|
|
|
| $implementation{nameSpaceInternal}->add(<<END);
|
| -static v8::Handle<v8::Value> ${interfaceName}ConstructorGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
|
| +static v8::Handle<v8::Value> ${implClassName}ConstructorGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
|
| {
|
| v8::Handle<v8::Value> data = info.Data();
|
| ASSERT(data->IsExternal());
|
| @@ -1325,8 +1343,8 @@ sub GenerateNormalAttrGetterCallback
|
| my $interface = shift;
|
| my $forMainWorldSuffix = shift;
|
|
|
| - my $interfaceName = $interface->name;
|
| - my $v8InterfaceName = "V8$interfaceName";
|
| + my $implClassName = GetImplClassName($interface);
|
| + my $v8ClassName = GetV8ClassName($interface);
|
| my $attrExt = $attribute->signature->extendedAttributes;
|
| my $attrName = $attribute->signature->name;
|
|
|
| @@ -1342,9 +1360,9 @@ sub GenerateNormalAttrGetterCallback
|
| $code .= GenerateActivityLogging("Getter", $interface, "${attrName}");
|
| }
|
| if (HasCustomGetter($attrExt)) {
|
| - $code .= " return ${v8InterfaceName}::${attrName}AttrGetterCustom(name, info);\n";
|
| + $code .= " return ${v8ClassName}::${attrName}AttrGetterCustom(name, info);\n";
|
| } else {
|
| - $code .= " return ${interfaceName}V8Internal::${attrName}AttrGetter${forMainWorldSuffix}(name, info);\n";
|
| + $code .= " return ${implClassName}V8Internal::${attrName}AttrGetter${forMainWorldSuffix}(name, info);\n";
|
| }
|
| $code .= "}\n\n";
|
| $code .= "#endif // ${conditionalString}\n\n" if $conditionalString;
|
| @@ -1359,7 +1377,8 @@ sub GenerateNormalAttrGetter
|
| my $forMainWorldSuffix = shift;
|
|
|
| my $interfaceName = $interface->name;
|
| - my $v8InterfaceName = "V8$interfaceName";
|
| + my $implClassName = GetImplClassName($interface);
|
| + my $v8ClassName = GetV8ClassName($interface);
|
| my $attrExt = $attribute->signature->extendedAttributes;
|
| my $attrName = $attribute->signature->name;
|
| my $attrType = $attribute->signature->type;
|
| @@ -1384,11 +1403,11 @@ END
|
| my $svgWrappedNativeType = GetSVGWrappedTypeNeedingTearOff($interfaceName);
|
| if ($svgWrappedNativeType =~ /List/) {
|
| $code .= <<END;
|
| - $svgNativeType* imp = ${v8InterfaceName}::toNative(info.Holder());
|
| + $svgNativeType* imp = ${v8ClassName}::toNative(info.Holder());
|
| END
|
| } else {
|
| $code .= <<END;
|
| - $svgNativeType* wrapper = ${v8InterfaceName}::toNative(info.Holder());
|
| + $svgNativeType* wrapper = ${v8ClassName}::toNative(info.Holder());
|
| $svgWrappedNativeType& impInstance = wrapper->propertyReference();
|
| END
|
| if ($getterStringUsesImp) {
|
| @@ -1405,13 +1424,13 @@ END
|
| } else {
|
| # perform lookup first
|
| $code .= <<END;
|
| - v8::Handle<v8::Object> holder = info.This()->FindInstanceInPrototypeChain(${v8InterfaceName}::GetTemplate(info.GetIsolate(), worldType(info.GetIsolate())));
|
| + v8::Handle<v8::Object> holder = info.This()->FindInstanceInPrototypeChain(${v8ClassName}::GetTemplate(info.GetIsolate(), worldType(info.GetIsolate())));
|
| if (holder.IsEmpty())
|
| return v8Undefined();
|
| END
|
| }
|
| $code .= <<END;
|
| - ${interfaceName}* imp = ${v8InterfaceName}::toNative(holder);
|
| + ${implClassName}* imp = ${v8ClassName}::toNative(holder);
|
| END
|
| } else {
|
| my $reflect = $attribute->signature->extendedAttributes->{"Reflect"};
|
| @@ -1437,7 +1456,7 @@ END
|
| }
|
| if (!$attribute->isStatic) {
|
| $code .= <<END;
|
| - ${interfaceName}* imp = ${v8InterfaceName}::toNative(info.Holder());
|
| + ${implClassName}* imp = ${v8ClassName}::toNative(info.Holder());
|
| END
|
| }
|
| }
|
| @@ -1472,7 +1491,7 @@ END
|
| unshift(@arguments, "imp") if !$attribute->isStatic;
|
| $functionName = "${implementedBy}::${functionName}";
|
| } elsif ($attribute->isStatic) {
|
| - $functionName = "${interfaceName}::${functionName}";
|
| + $functionName = "${implClassName}::${functionName}";
|
| } else {
|
| $functionName = "imp->${functionName}";
|
| }
|
| @@ -1571,12 +1590,12 @@ END
|
| $getter =~ s/imp->//;
|
| $getter =~ s/\(\)//;
|
|
|
| - my $updateMethod = "&${interfaceName}::update" . FirstLetterToUpperCase($getter);
|
| + my $updateMethod = "&${implClassName}::update" . FirstLetterToUpperCase($getter);
|
|
|
| my $selfIsTearOffType = IsSVGTypeNeedingTearOff($interfaceName);
|
| if ($selfIsTearOffType) {
|
| AddToImplIncludes("core/svg/properties/SVGStaticPropertyWithParentTearOff.h");
|
| - $tearOffType =~ s/SVGPropertyTearOff</SVGStaticPropertyWithParentTearOff<$interfaceName, /;
|
| + $tearOffType =~ s/SVGPropertyTearOff</SVGStaticPropertyWithParentTearOff<$implClassName, /;
|
|
|
| if ($expression =~ /matrix/ and $interfaceName eq "SVGTransform") {
|
| # SVGTransform offers a matrix() method for internal usage that returns an AffineTransform
|
| @@ -1587,7 +1606,7 @@ END
|
| $wrappedValue = "WTF::getPtr(${tearOffType}::create(wrapper, $expression, $updateMethod))";
|
| } else {
|
| AddToImplIncludes("core/svg/properties/SVGStaticPropertyTearOff.h");
|
| - $tearOffType =~ s/SVGPropertyTearOff</SVGStaticPropertyTearOff<$interfaceName, /;
|
| + $tearOffType =~ s/SVGPropertyTearOff</SVGStaticPropertyTearOff<$implClassName, /;
|
|
|
| $wrappedValue = "WTF::getPtr(${tearOffType}::create(imp, $expression, $updateMethod))";
|
| }
|
| @@ -1668,17 +1687,17 @@ sub ShouldKeepAttributeAlive
|
| sub GenerateReplaceableAttrSetterCallback
|
| {
|
| my $interface = shift;
|
| - my $interfaceName = $interface->name;
|
| + my $implClassName = GetImplClassName($interface);
|
|
|
| my $code = "";
|
| - $code .= "static void ${interfaceName}ReplaceableAttrSetterCallback(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info)\n";
|
| + $code .= "static void ${implClassName}ReplaceableAttrSetterCallback(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info)\n";
|
| $code .= "{\n";
|
| $code .= GenerateFeatureObservation($interface->extendedAttributes->{"MeasureAs"});
|
| $code .= GenerateDeprecationNotification($interface->extendedAttributes->{"DeprecateAs"});
|
| if (HasActivityLogging("", $interface->extendedAttributes, "Setter")) {
|
| die "IDL error: ActivityLog attribute cannot exist on a ReplacableAttrSetterCallback";
|
| }
|
| - $code .= " return ${interfaceName}V8Internal::${interfaceName}ReplaceableAttrSetter(name, value, info);\n";
|
| + $code .= " return ${implClassName}V8Internal::${implClassName}ReplaceableAttrSetter(name, value, info);\n";
|
| $code .= "}\n\n";
|
| $implementation{nameSpaceInternal}->add($code);
|
| }
|
| @@ -1686,18 +1705,20 @@ sub GenerateReplaceableAttrSetterCallback
|
| sub GenerateReplaceableAttrSetter
|
| {
|
| my $interface = shift;
|
| - my $interfaceName = $interface->name;
|
| +
|
| + my $implClassName = GetImplClassName($interface);
|
| + my $v8ClassName = GetV8ClassName($interface);
|
|
|
| my $code = "";
|
| $code .= <<END;
|
| -static void ${interfaceName}ReplaceableAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info)
|
| +static void ${implClassName}ReplaceableAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info)
|
| {
|
| END
|
| if ($interface->extendedAttributes->{"CheckSecurity"}) {
|
| AddToImplIncludes("core/page/Frame.h");
|
| AddToImplIncludes("bindings/v8/BindingSecurity.h");
|
| $code .= <<END;
|
| - ${interfaceName}* imp = V8${interfaceName}::toNative(info.Holder());
|
| + ${implClassName}* imp = ${v8ClassName}::toNative(info.Holder());
|
| if (!BindingSecurity::shouldAllowAccessToFrame(imp->frame()))
|
| return;
|
| END
|
| @@ -1735,8 +1756,8 @@ sub GenerateNormalAttrSetterCallback
|
| my $interface = shift;
|
| my $forMainWorldSuffix = shift;
|
|
|
| - my $interfaceName = $interface->name;
|
| - my $v8InterfaceName = "V8$interfaceName";
|
| + my $implClassName = GetImplClassName($interface);
|
| + my $v8ClassName = GetV8ClassName($interface);
|
| my $attrExt = $attribute->signature->extendedAttributes;
|
| my $attrName = $attribute->signature->name;
|
|
|
| @@ -1752,9 +1773,9 @@ sub GenerateNormalAttrSetterCallback
|
| $code .= GenerateActivityLogging("Setter", $interface, "${attrName}");
|
| }
|
| if (HasCustomSetter($attrExt)) {
|
| - $code .= " ${v8InterfaceName}::${attrName}AttrSetterCustom(name, value, info);\n";
|
| + $code .= " ${v8ClassName}::${attrName}AttrSetterCustom(name, value, info);\n";
|
| } else {
|
| - $code .= " ${interfaceName}V8Internal::${attrName}AttrSetter${forMainWorldSuffix}(name, value, info);\n";
|
| + $code .= " ${implClassName}V8Internal::${attrName}AttrSetter${forMainWorldSuffix}(name, value, info);\n";
|
| }
|
| $code .= "}\n\n";
|
| $code .= "#endif // ${conditionalString}\n\n" if $conditionalString;
|
| @@ -1768,7 +1789,8 @@ sub GenerateNormalAttrSetter
|
| my $forMainWorldSuffix = shift;
|
|
|
| my $interfaceName = $interface->name;
|
| - my $v8InterfaceName = "V8$interfaceName";
|
| + my $implClassName = GetImplClassName($interface);
|
| + my $v8ClassName = GetV8ClassName($interface);
|
| my $attrName = $attribute->signature->name;
|
| my $attrExt = $attribute->signature->extendedAttributes;
|
| my $attrType = $attribute->signature->type;
|
| @@ -1803,11 +1825,11 @@ sub GenerateNormalAttrSetter
|
| my $svgWrappedNativeType = GetSVGWrappedTypeNeedingTearOff($interfaceName);
|
| if ($svgWrappedNativeType =~ /List$/) {
|
| $code .= <<END;
|
| - $svgNativeType* imp = ${v8InterfaceName}::toNative(info.Holder());
|
| + $svgNativeType* imp = ${v8ClassName}::toNative(info.Holder());
|
| END
|
| } else {
|
| AddToImplIncludes("core/dom/ExceptionCode.h");
|
| - $code .= " $svgNativeType* wrapper = ${v8InterfaceName}::toNative(info.Holder());\n";
|
| + $code .= " $svgNativeType* wrapper = ${v8ClassName}::toNative(info.Holder());\n";
|
| $code .= " if (wrapper->isReadOnly()) {\n";
|
| $code .= " setDOMException(NO_MODIFICATION_ALLOWED_ERR, info.GetIsolate());\n";
|
| $code .= " return;\n";
|
| @@ -1817,7 +1839,7 @@ END
|
| }
|
| } elsif ($attrExt->{"OnProto"}) {
|
| $code .= <<END;
|
| - ${interfaceName}* imp = ${v8InterfaceName}::toNative(info.Holder());
|
| + ${implClassName}* imp = ${v8ClassName}::toNative(info.Holder());
|
| END
|
| } else {
|
| my $reflect = $attribute->signature->extendedAttributes->{"Reflect"};
|
| @@ -1838,7 +1860,7 @@ END
|
|
|
| if (!$attribute->isStatic) {
|
| $code .= <<END;
|
| - ${interfaceName}* imp = ${v8InterfaceName}::toNative(info.Holder());
|
| + ${implClassName}* imp = ${v8ClassName}::toNative(info.Holder());
|
| END
|
| }
|
| }
|
| @@ -1901,7 +1923,7 @@ END
|
| my $implSetterFunctionName = FirstLetterToUpperCase($attrName);
|
| AddToImplIncludes("bindings/v8/V8AbstractEventListener.h");
|
| if (!InheritsInterface($interface, "Node")) {
|
| - $code .= " transferHiddenDependency(info.Holder(), imp->$attrName(), value, ${v8InterfaceName}::eventListenerCacheIndex, info.GetIsolate());\n";
|
| + $code .= " transferHiddenDependency(info.Holder(), imp->$attrName(), value, ${v8ClassName}::eventListenerCacheIndex, info.GetIsolate());\n";
|
| }
|
| AddToImplIncludes("bindings/v8/V8EventListenerList.h");
|
| if ($interfaceName eq "WorkerContext" and $attribute->signature->name eq "onerror") {
|
| @@ -1925,7 +1947,7 @@ END
|
| unshift(@arguments, "imp") if !$attribute->isStatic;
|
| $functionName = "${implementedBy}::${functionName}";
|
| } elsif ($attribute->isStatic) {
|
| - $functionName = "${interfaceName}::${functionName}";
|
| + $functionName = "${implClassName}::${functionName}";
|
| } else {
|
| $functionName = "imp->${functionName}";
|
| }
|
| @@ -2059,7 +2081,6 @@ sub GenerateOverloadedFunction
|
| my $function = shift;
|
| my $interface = shift;
|
| my $forMainWorldSuffix = shift;
|
| - my $interfaceName = $interface->name;
|
|
|
| # Generate code for choosing the correct overload to call. Overloads are
|
| # chosen based on the total number of arguments passed and the type of
|
| @@ -2105,8 +2126,8 @@ sub GenerateFunctionCallback
|
| my $interface = shift;
|
| my $forMainWorldSuffix = shift;
|
|
|
| - my $interfaceName = $interface->name;
|
| - my $v8InterfaceName = "V8$interfaceName";
|
| + my $implClassName = GetImplClassName($interface);
|
| + my $v8ClassName = GetV8ClassName($interface);
|
| my $name = $function->signature->name;
|
|
|
| if ($name eq "") {
|
| @@ -2126,9 +2147,9 @@ END
|
| $code .= GenerateActivityLogging("Method", $interface, "${name}");
|
| }
|
| if (HasCustomMethod($function->signature->extendedAttributes)) {
|
| - $code .= " return ${v8InterfaceName}::${name}MethodCustom(args);\n";
|
| + $code .= " return ${v8ClassName}::${name}MethodCustom(args);\n";
|
| } else {
|
| - $code .= " return ${interfaceName}V8Internal::${name}Method${forMainWorldSuffix}(args);\n";
|
| + $code .= " return ${implClassName}V8Internal::${name}Method${forMainWorldSuffix}(args);\n";
|
| }
|
| $code .= "}\n\n";
|
| $code .= "#endif // ${conditionalString}\n\n" if $conditionalString;
|
| @@ -2142,7 +2163,8 @@ sub GenerateFunction
|
| my $forMainWorldSuffix = shift;
|
|
|
| my $interfaceName = $interface->name;
|
| - my $v8InterfaceName = "V8$interfaceName";
|
| + my $implClassName = GetImplClassName($interface);
|
| + my $v8ClassName = GetV8ClassName($interface);
|
| my $name = $function->signature->name;
|
| my $funcExt = $function->signature->extendedAttributes;
|
|
|
| @@ -2171,11 +2193,11 @@ sub GenerateFunction
|
| RefPtr<EventListener> listener = V8EventListenerList::getEventListener(args[1], false, ListenerFind${lookupType});
|
| if (listener) {
|
| V8TRYCATCH_FOR_V8STRINGRESOURCE(V8StringResource<WithNullCheck>, stringResource, args[0]);
|
| - V8${interfaceName}::toNative(args.Holder())->${name}(stringResource, listener${passRefPtrHandling}, args[2]->BooleanValue());
|
| + ${v8ClassName}::toNative(args.Holder())->${name}(stringResource, listener${passRefPtrHandling}, args[2]->BooleanValue());
|
| END
|
| if (!InheritsInterface($interface, "Node")) {
|
| $code .= <<END;
|
| - ${hiddenDependencyAction}HiddenDependency(args.Holder(), args[1], V8${interfaceName}::eventListenerCacheIndex, args.GetIsolate());
|
| + ${hiddenDependencyAction}HiddenDependency(args.Holder(), args[1], ${v8ClassName}::eventListenerCacheIndex, args.GetIsolate());
|
| END
|
| }
|
| $code .= <<END;
|
| @@ -2194,7 +2216,7 @@ END
|
| if ($name eq "set" and $interface->extendedAttributes->{"TypedArray"}) {
|
| AddToImplIncludes("bindings/v8/custom/V8ArrayBufferViewCustom.h");
|
| $code .= <<END;
|
| - return setWebGLArrayHelper<$interfaceName, ${v8InterfaceName}>(args);
|
| + return setWebGLArrayHelper<$implClassName, ${v8ClassName}>(args);
|
| }
|
|
|
| END
|
| @@ -2207,10 +2229,10 @@ END
|
| if ($svgNativeType) {
|
| my $nativeClassName = GetNativeType($interfaceName);
|
| if ($interfaceName =~ /List$/) {
|
| - $code .= " $nativeClassName imp = ${v8InterfaceName}::toNative(args.Holder());\n";
|
| + $code .= " $nativeClassName imp = ${v8ClassName}::toNative(args.Holder());\n";
|
| } else {
|
| AddToImplIncludes("core/dom/ExceptionCode.h");
|
| - $code .= " $nativeClassName wrapper = ${v8InterfaceName}::toNative(args.Holder());\n";
|
| + $code .= " $nativeClassName wrapper = ${v8ClassName}::toNative(args.Holder());\n";
|
| $code .= " if (wrapper->isReadOnly())\n";
|
| $code .= " return setDOMException(NO_MODIFICATION_ALLOWED_ERR, args.GetIsolate());\n";
|
| my $svgWrappedNativeType = GetSVGWrappedTypeNeedingTearOff($interfaceName);
|
| @@ -2219,7 +2241,7 @@ END
|
| }
|
| } elsif (!$function->isStatic) {
|
| $code .= <<END;
|
| - ${interfaceName}* imp = ${v8InterfaceName}::toNative(args.Holder());
|
| + ${implClassName}* imp = ${v8ClassName}::toNative(args.Holder());
|
| END
|
| }
|
|
|
| @@ -2261,11 +2283,11 @@ END
|
| END
|
| }
|
|
|
| - my ($parameterCheckString, $paramIndex, %replacements) = GenerateParametersCheck($function, $interfaceName, $forMainWorldSuffix);
|
| + my ($parameterCheckString, $paramIndex, %replacements) = GenerateParametersCheck($function, $interface, $forMainWorldSuffix);
|
| $code .= $parameterCheckString;
|
|
|
| # Build the function call string.
|
| - $code .= GenerateFunctionCallString($function, $paramIndex, " ", $interfaceName, $forMainWorldSuffix, %replacements);
|
| + $code .= GenerateFunctionCallString($function, $paramIndex, " ", $interface, $forMainWorldSuffix, %replacements);
|
|
|
| if ($raisesExceptions) {
|
| $code .= " }\n";
|
| @@ -2349,7 +2371,7 @@ sub GetIndexOf
|
| sub GenerateParametersCheck
|
| {
|
| my $function = shift;
|
| - my $interfaceName = shift;
|
| + my $interface = shift;
|
| my $forMainWorldSuffix = shift;
|
|
|
| my $parameterCheckString = "";
|
| @@ -2364,7 +2386,7 @@ sub GenerateParametersCheck
|
| # Optional Dictionary arguments always considered to have default of empty dictionary.
|
| if ($parameter->isOptional && !$parameter->extendedAttributes->{"Default"} && $nativeType ne "Dictionary" && !IsCallbackInterface($parameter->type)) {
|
| $parameterCheckString .= " if (args.Length() <= $paramIndex) {\n";
|
| - my $functionCall = GenerateFunctionCallString($function, $paramIndex, " " x 2, $interfaceName, $forMainWorldSuffix, %replacements);
|
| + my $functionCall = GenerateFunctionCallString($function, $paramIndex, " " x 2, $interface, $forMainWorldSuffix, %replacements);
|
| $parameterCheckString .= $functionCall;
|
| $parameterCheckString .= " }\n";
|
| }
|
| @@ -2378,19 +2400,19 @@ sub GenerateParametersCheck
|
| my $parameterName = $parameter->name;
|
| AddToImplIncludes("core/dom/ExceptionCode.h");
|
| if (IsCallbackInterface($parameter->type)) {
|
| - my $v8InterfaceName = "V8" . $parameter->type;
|
| - AddToImplIncludes("$v8InterfaceName.h");
|
| + my $v8ClassName = "V8" . $parameter->type;
|
| + AddToImplIncludes("$v8ClassName.h");
|
| if ($parameter->isOptional) {
|
| $parameterCheckString .= " RefPtr<" . $parameter->type . "> $parameterName;\n";
|
| $parameterCheckString .= " if (args.Length() > $paramIndex && !args[$paramIndex]->IsNull() && !args[$paramIndex]->IsUndefined()) {\n";
|
| $parameterCheckString .= " if (!args[$paramIndex]->IsFunction())\n";
|
| $parameterCheckString .= " return throwTypeError(0, args.GetIsolate());\n";
|
| - $parameterCheckString .= " $parameterName = ${v8InterfaceName}::create(args[$paramIndex], getScriptExecutionContext());\n";
|
| + $parameterCheckString .= " $parameterName = ${v8ClassName}::create(args[$paramIndex], getScriptExecutionContext());\n";
|
| $parameterCheckString .= " }\n";
|
| } else {
|
| $parameterCheckString .= " if (args.Length() <= $paramIndex || !args[$paramIndex]->IsFunction())\n";
|
| $parameterCheckString .= " return throwTypeError(0, args.GetIsolate());\n";
|
| - $parameterCheckString .= " RefPtr<" . $parameter->type . "> $parameterName = ${v8InterfaceName}::create(args[$paramIndex], getScriptExecutionContext());\n";
|
| + $parameterCheckString .= " RefPtr<" . $parameter->type . "> $parameterName = ${v8ClassName}::create(args[$paramIndex], getScriptExecutionContext());\n";
|
| }
|
| } elsif ($parameter->extendedAttributes->{"Clamp"}) {
|
| my $nativeValue = "${parameterName}NativeValue";
|
| @@ -2487,7 +2509,7 @@ sub GenerateParametersCheck
|
| sub GenerateOverloadedConstructorCallback
|
| {
|
| my $interface = shift;
|
| - my $interfaceName = $interface->name;
|
| + my $implClassName = GetImplClassName($interface);
|
|
|
| my $code = "";
|
| $code .= <<END;
|
| @@ -2500,7 +2522,7 @@ END
|
| my ($numMandatoryParams, $parametersCheck) = GenerateFunctionParametersCheck($constructor);
|
| $leastNumMandatoryParams = $numMandatoryParams if ($numMandatoryParams < $leastNumMandatoryParams);
|
| $code .= " if ($parametersCheck)\n";
|
| - $code .= " return ${interfaceName}V8Internal::${name}(args);\n";
|
| + $code .= " return ${implClassName}V8Internal::${name}(args);\n";
|
| }
|
| if ($leastNumMandatoryParams >= 1) {
|
| $code .= " if (args.Length() < $leastNumMandatoryParams)\n";
|
| @@ -2518,7 +2540,8 @@ sub GenerateSingleConstructorCallback
|
| my $interface = shift;
|
| my $function = shift;
|
|
|
| - my $interfaceName = $interface->name;
|
| + my $implClassName = GetImplClassName($interface);
|
| + my $v8ClassName = GetV8ClassName($interface);
|
| my $overloadedIndexString = "";
|
| if ($function->{overloadedIndex} > 0) {
|
| $overloadedIndexString .= $function->{overloadedIndex};
|
| @@ -2555,7 +2578,7 @@ END
|
| }
|
|
|
| # FIXME: Currently [Constructor(...)] does not yet support optional arguments without [Default=...]
|
| - my ($parameterCheckString, $paramIndex, %replacements) = GenerateParametersCheck($function, $interfaceName, "");
|
| + my ($parameterCheckString, $paramIndex, %replacements) = GenerateParametersCheck($function, $interface, "");
|
| $code .= $parameterCheckString;
|
|
|
| if ($interface->extendedAttributes->{"CallWith"} && $interface->extendedAttributes->{"CallWith"} eq "ScriptExecutionContext") {
|
| @@ -2584,7 +2607,7 @@ END
|
|
|
| my $argumentString = join(", ", @beforeArgumentList, @argumentList, @afterArgumentList);
|
| $code .= "\n";
|
| - $code .= " RefPtr<${interfaceName}> impl = ${interfaceName}::create(${argumentString});\n";
|
| + $code .= " RefPtr<${implClassName}> impl = ${implClassName}::create(${argumentString});\n";
|
| $code .= " v8::Handle<v8::Object> wrapper = args.Holder();\n";
|
|
|
| if ($interface->extendedAttributes->{"RaisesException"}) {
|
| @@ -2594,7 +2617,7 @@ END
|
|
|
| $code .= <<END;
|
|
|
| - V8DOMWrapper::associateObjectWithWrapper(impl.release(), &V8${interfaceName}::info, wrapper, args.GetIsolate(), WrapperConfiguration::Dependent);
|
| + V8DOMWrapper::associateObjectWithWrapper(impl.release(), &${v8ClassName}::info, wrapper, args.GetIsolate(), WrapperConfiguration::Dependent);
|
| return wrapper;
|
| END
|
|
|
| @@ -2636,17 +2659,18 @@ sub GenerateConstructorCallback
|
| {
|
| my $interface = shift;
|
|
|
| - my $interfaceName = $interface->name;
|
| + my $implClassName = GetImplClassName($interface);
|
| + my $v8ClassName = GetV8ClassName($interface);
|
| my $code = "";
|
| - $code .= "v8::Handle<v8::Value> V8${interfaceName}::constructorCallback(const v8::Arguments& args)\n";
|
| + $code .= "v8::Handle<v8::Value> ${v8ClassName}::constructorCallback(const v8::Arguments& args)\n";
|
| $code .= "{\n";
|
| $code .= GenerateFeatureObservation($interface->extendedAttributes->{"MeasureAs"});
|
| $code .= GenerateDeprecationNotification($interface->extendedAttributes->{"DeprecateAs"});
|
| $code .= GenerateConstructorHeader();
|
| if (HasCustomConstructor($interface)) {
|
| - $code .= " return V8${interfaceName}::constructorCustom(args);\n";
|
| + $code .= " return ${v8ClassName}::constructorCustom(args);\n";
|
| } else {
|
| - $code .= " return ${interfaceName}V8Internal::constructor(args);\n";
|
| + $code .= " return ${implClassName}V8Internal::constructor(args);\n";
|
| }
|
| $code .= "}\n\n";
|
| $implementation{nameSpaceWebCore}->add($code);
|
| @@ -2655,7 +2679,6 @@ sub GenerateConstructorCallback
|
| sub GenerateConstructor
|
| {
|
| my $interface = shift;
|
| - my $interfaceName = $interface->name;
|
|
|
| if (@{$interface->constructors} == 1) {
|
| GenerateSingleConstructorCallback($interface, @{$interface->constructors}[0]);
|
| @@ -2670,7 +2693,8 @@ sub GenerateConstructor
|
| sub GenerateEventConstructor
|
| {
|
| my $interface = shift;
|
| - my $interfaceName = $interface->name;
|
| + my $implClassName = GetImplClassName($interface);
|
| + my $v8ClassName = GetV8ClassName($interface);
|
|
|
| AddToImplIncludes("bindings/v8/Dictionary.h");
|
| $implementation{nameSpaceInternal}->add(<<END);
|
| @@ -2680,24 +2704,24 @@ static v8::Handle<v8::Value> constructor(const v8::Arguments& args)
|
| return throwNotEnoughArgumentsError(args.GetIsolate());
|
|
|
| V8TRYCATCH_FOR_V8STRINGRESOURCE(V8StringResource<>, type, args[0]);
|
| - ${interfaceName}Init eventInit;
|
| + ${implClassName}Init eventInit;
|
| if (args.Length() >= 2) {
|
| V8TRYCATCH(Dictionary, options, Dictionary(args[1], args.GetIsolate()));
|
| - if (!fill${interfaceName}Init(eventInit, options))
|
| + if (!fill${implClassName}Init(eventInit, options))
|
| return v8Undefined();
|
| }
|
|
|
| - RefPtr<${interfaceName}> event = ${interfaceName}::create(type, eventInit);
|
| + RefPtr<${implClassName}> event = ${implClassName}::create(type, eventInit);
|
|
|
| v8::Handle<v8::Object> wrapper = args.Holder();
|
| - V8DOMWrapper::associateObjectWithWrapper(event.release(), &V8${interfaceName}::info, wrapper, args.GetIsolate(), WrapperConfiguration::Dependent);
|
| + V8DOMWrapper::associateObjectWithWrapper(event.release(), &${v8ClassName}::info, wrapper, args.GetIsolate(), WrapperConfiguration::Dependent);
|
| return wrapper;
|
| }
|
| END
|
|
|
| my $code = "";
|
| $code .= <<END;
|
| -bool fill${interfaceName}Init(${interfaceName}Init& eventInit, const Dictionary& options)
|
| +bool fill${implClassName}Init(${implClassName}Init& eventInit, const Dictionary& options)
|
| {
|
| END
|
|
|
| @@ -2728,7 +2752,9 @@ END
|
| sub GenerateTypedArrayConstructor
|
| {
|
| my $interface = shift;
|
| - my $interfaceName = $interface->name;
|
| + my $implClassName = GetImplClassName($interface);
|
| + my $v8ClassName = GetV8ClassName($interface);
|
| +
|
| my $viewType = GetTypeNameOfExternalTypedArray($interface);
|
| my $type = $interface->extendedAttributes->{"TypedArray"};
|
| AddToImplIncludes("bindings/v8/custom/V8ArrayBufferViewCustom.h");
|
| @@ -2736,7 +2762,7 @@ sub GenerateTypedArrayConstructor
|
| $implementation{nameSpaceInternal}->add(<<END);
|
| static v8::Handle<v8::Value> constructor(const v8::Arguments& args)
|
| {
|
| - return constructWebGLArray<$interfaceName, V8${interfaceName}, $type>(args, &V8${interfaceName}::info, $viewType);
|
| + return constructWebGLArray<$implClassName, ${v8ClassName}, $type>(args, &${v8ClassName}::info, $viewType);
|
| }
|
|
|
| END
|
| @@ -2747,8 +2773,8 @@ sub GenerateNamedConstructor
|
| my $function = shift;
|
| my $interface = shift;
|
|
|
| - my $interfaceName = $interface->name;
|
| - my $v8InterfaceName = "V8$interfaceName";
|
| + my $implClassName = GetImplClassName($interface);
|
| + my $v8ClassName = GetV8ClassName($interface);
|
| my $raisesExceptions = $function->signature->extendedAttributes->{"RaisesException"};
|
| if ($interface->extendedAttributes->{"RaisesException"}) {
|
| $raisesExceptions = 1;
|
| @@ -2769,23 +2795,23 @@ sub GenerateNamedConstructor
|
|
|
| my $toActiveDOMObject = "0";
|
| if (InheritsExtendedAttribute($interface, "ActiveDOMObject")) {
|
| - $toActiveDOMObject = "${v8InterfaceName}::toActiveDOMObject";
|
| + $toActiveDOMObject = "${v8ClassName}::toActiveDOMObject";
|
| }
|
|
|
| my $toEventTarget = "0";
|
| if (InheritsExtendedAttribute($interface, "EventTarget")) {
|
| - $toEventTarget = "${v8InterfaceName}::toEventTarget";
|
| + $toEventTarget = "${v8ClassName}::toEventTarget";
|
| }
|
|
|
| AddToImplIncludes("core/page/Frame.h");
|
| $implementation{nameSpaceWebCore}->add(<<END);
|
| -WrapperTypeInfo ${v8InterfaceName}Constructor::info = { ${v8InterfaceName}Constructor::GetTemplate, ${v8InterfaceName}::derefObject, $toActiveDOMObject, $toEventTarget, 0, ${v8InterfaceName}::installPerContextPrototypeProperties, 0, WrapperTypeObjectPrototype };
|
| +WrapperTypeInfo ${v8ClassName}Constructor::info = { ${v8ClassName}Constructor::GetTemplate, ${v8ClassName}::derefObject, $toActiveDOMObject, $toEventTarget, 0, ${v8ClassName}::installPerContextPrototypeProperties, 0, WrapperTypeObjectPrototype };
|
|
|
| END
|
|
|
| my $code = "";
|
| $code .= <<END;
|
| -static v8::Handle<v8::Value> ${v8InterfaceName}ConstructorCallback(const v8::Arguments& args)
|
| +static v8::Handle<v8::Value> ${v8ClassName}ConstructorCallback(const v8::Arguments& args)
|
| {
|
| END
|
| $code .= $maybeObserveFeature if $maybeObserveFeature;
|
| @@ -2795,7 +2821,7 @@ END
|
| $code .= <<END;
|
| Document* document = currentDocument();
|
|
|
| - // Make sure the document is added to the DOM Node map. Otherwise, the ${interfaceName} instance
|
| + // Make sure the document is added to the DOM Node map. Otherwise, the ${implClassName} instance
|
| // may end up being the only node in the map and get garbage-collected prematurely.
|
| toV8(document, args.Holder(), args.GetIsolate());
|
|
|
| @@ -2809,7 +2835,7 @@ END
|
| $code .= " ExceptionCode ec = 0;\n";
|
| }
|
|
|
| - my ($parameterCheckString, $paramIndex, %replacements) = GenerateParametersCheck($function, $interfaceName);
|
| + my ($parameterCheckString, $paramIndex, %replacements) = GenerateParametersCheck($function, $interface);
|
| $code .= $parameterCheckString;
|
|
|
| push(@beforeArgumentList, "document");
|
| @@ -2832,7 +2858,7 @@ END
|
|
|
| my $argumentString = join(", ", @beforeArgumentList, @argumentList, @afterArgumentList);
|
| $code .= "\n";
|
| - $code .= " RefPtr<${interfaceName}> impl = ${interfaceName}::createForJSConstructor(${argumentString});\n";
|
| + $code .= " RefPtr<${implClassName}> impl = ${implClassName}::createForJSConstructor(${argumentString});\n";
|
| $code .= " v8::Handle<v8::Object> wrapper = args.Holder();\n";
|
|
|
| if ($interface->extendedAttributes->{"RaisesException"}) {
|
| @@ -2842,7 +2868,7 @@ END
|
|
|
| $code .= <<END;
|
|
|
| - V8DOMWrapper::associateObjectWithWrapper(impl.release(), &${v8InterfaceName}Constructor::info, wrapper, args.GetIsolate(), WrapperConfiguration::Dependent);
|
| + V8DOMWrapper::associateObjectWithWrapper(impl.release(), &${v8ClassName}Constructor::info, wrapper, args.GetIsolate(), WrapperConfiguration::Dependent);
|
| return wrapper;
|
| END
|
|
|
| @@ -2856,19 +2882,19 @@ END
|
|
|
| $code = <<END;
|
|
|
| -v8::Persistent<v8::FunctionTemplate> ${v8InterfaceName}Constructor::GetTemplate(v8::Isolate* isolate, WrapperWorldType currentWorldType)
|
| +v8::Persistent<v8::FunctionTemplate> ${v8ClassName}Constructor::GetTemplate(v8::Isolate* isolate, WrapperWorldType currentWorldType)
|
| {
|
| static v8::Persistent<v8::FunctionTemplate> cachedTemplate;
|
| if (!cachedTemplate.IsEmpty())
|
| return cachedTemplate;
|
|
|
| v8::HandleScope scope;
|
| - v8::Local<v8::FunctionTemplate> result = v8::FunctionTemplate::New(${v8InterfaceName}ConstructorCallback);
|
| + v8::Local<v8::FunctionTemplate> result = v8::FunctionTemplate::New(${v8ClassName}ConstructorCallback);
|
|
|
| v8::Local<v8::ObjectTemplate> instance = result->InstanceTemplate();
|
| - instance->SetInternalFieldCount(${v8InterfaceName}::internalFieldCount);
|
| - result->SetClassName(v8::String::NewSymbol("${interfaceName}"));
|
| - result->Inherit(${v8InterfaceName}::GetTemplate(isolate, currentWorldType));
|
| + instance->SetInternalFieldCount(${v8ClassName}::internalFieldCount);
|
| + result->SetClassName(v8::String::NewSymbol("${implClassName}"));
|
| + result->Inherit(${v8ClassName}::GetTemplate(isolate, currentWorldType));
|
|
|
| cachedTemplate = v8::Persistent<v8::FunctionTemplate>::New(isolate, result);
|
| return cachedTemplate;
|
| @@ -2897,13 +2923,12 @@ sub GenerateBatchedAttributeData
|
| my $interface = shift;
|
| my $attributes = shift;
|
| my $code = "";
|
| - my $interfaceName = $interface->name;
|
|
|
| foreach my $attribute (@$attributes) {
|
| my $conditionalString = GenerateConditionalString($attribute->signature);
|
| my $subCode = "";
|
| $subCode .= "#if ${conditionalString}\n" if $conditionalString;
|
| - $subCode .= GenerateSingleBatchedAttribute($interfaceName, $attribute, ",", "");
|
| + $subCode .= GenerateSingleBatchedAttribute($interface, $attribute, ",", "");
|
| $subCode .= "#endif // ${conditionalString}\n" if $conditionalString;
|
| $code .= $subCode;
|
| }
|
| @@ -2912,13 +2937,14 @@ sub GenerateBatchedAttributeData
|
|
|
| sub GenerateSingleBatchedAttribute
|
| {
|
| - my $interfaceName = shift;
|
| + my $interface = shift;
|
| my $attribute = shift;
|
| my $delimiter = shift;
|
| my $indent = shift;
|
| my $code = "";
|
| my $attrName = $attribute->signature->name;
|
| my $attrExt = $attribute->signature->extendedAttributes;
|
| + my $implClassName = GetImplClassName($interface);
|
|
|
| my $accessControl = "v8::DEFAULT";
|
| if ($attrExt->{"DoNotCheckSecurityOnGetter"}) {
|
| @@ -2939,7 +2965,7 @@ sub GenerateSingleBatchedAttribute
|
| my $customAccessor = HasCustomGetter($attrExt) || HasCustomSetter($attrExt) || "";
|
| if ($customAccessor eq "VALUE_IS_MISSING") {
|
| # use the naming convension, interface + (capitalize) attr name
|
| - $customAccessor = $interfaceName . "::" . $attrName;
|
| + $customAccessor = $implClassName . "::" . $attrName;
|
| }
|
|
|
| my $getter;
|
| @@ -2974,19 +3000,19 @@ sub GenerateSingleBatchedAttribute
|
| AddToImplIncludes("V8${constructorType}.h", $attribute->signature->extendedAttributes->{"Conditional"});
|
| }
|
| $data = "&V8${constructorType}::info";
|
| - $getter = "${interfaceName}V8Internal::${interfaceName}ConstructorGetter";
|
| - $setter = "${interfaceName}V8Internal::${interfaceName}ReplaceableAttrSetterCallback";
|
| + $getter = "${implClassName}V8Internal::${implClassName}ConstructorGetter";
|
| + $setter = "${implClassName}V8Internal::${implClassName}ReplaceableAttrSetterCallback";
|
| $getterForMainWorld = "0";
|
| $setterForMainWorld = "0";
|
| } else {
|
| # Default Getter and Setter
|
| - $getter = "${interfaceName}V8Internal::${attrName}AttrGetterCallback";
|
| - $setter = "${interfaceName}V8Internal::${attrName}AttrSetterCallback";
|
| + $getter = "${implClassName}V8Internal::${attrName}AttrGetterCallback";
|
| + $setter = "${implClassName}V8Internal::${attrName}AttrSetterCallback";
|
| $getterForMainWorld = "${getter}ForMainWorld";
|
| $setterForMainWorld = "${setter}ForMainWorld";
|
|
|
| if (!HasCustomSetter($attrExt) && $attrExt->{"Replaceable"}) {
|
| - $setter = "${interfaceName}V8Internal::${interfaceName}ReplaceableAttrSetterCallback";
|
| + $setter = "${implClassName}V8Internal::${implClassName}ReplaceableAttrSetterCallback";
|
| $setterForMainWorld = "0";
|
| }
|
| }
|
| @@ -3040,7 +3066,7 @@ sub GenerateNonStandardFunction
|
| my $function = shift;
|
| my $code = "";
|
|
|
| - my $interfaceName = $interface->name;
|
| + my $implClassName = GetImplClassName($interface);
|
| my $attrExt = $function->signature->extendedAttributes;
|
| my $name = $function->signature->name;
|
|
|
| @@ -3082,7 +3108,7 @@ sub GenerateNonStandardFunction
|
| $code .= <<END;
|
|
|
| // $commentInfo
|
| - ${conditional}$template->SetAccessor(v8::String::NewSymbol("$name"), ${interfaceName}V8Internal::${name}AttrGetterCallback, ${interfaceName}V8Internal::${interfaceName}DomainSafeFunctionSetter, v8Undefined(), v8::ALL_CAN_READ, static_cast<v8::PropertyAttribute>($property_attributes));
|
| + ${conditional}$template->SetAccessor(v8::String::NewSymbol("$name"), ${implClassName}V8Internal::${name}AttrGetterCallback, ${implClassName}V8Internal::${implClassName}DomainSafeFunctionSetter, v8Undefined(), v8::ALL_CAN_READ, static_cast<v8::PropertyAttribute>($property_attributes));
|
| END
|
| return $code;
|
| }
|
| @@ -3104,7 +3130,7 @@ END
|
| }
|
|
|
| if ($template eq "proto" && $conditional eq "" && $signature eq "defaultSignature" && $property_attributes eq "") {
|
| - die "This shouldn't happen: Intraface '$interfaceName' $commentInfo\n";
|
| + die "This shouldn't happen: Class '$implClassName' $commentInfo\n";
|
| }
|
|
|
| my $functionLength = GetFunctionLength($function);
|
| @@ -3113,12 +3139,12 @@ END
|
| $code .= "#if ${conditionalString}\n" if $conditionalString;
|
| if ($function->signature->extendedAttributes->{"PerWorldBindings"}) {
|
| $code .= " if (currentWorldType == MainWorld) {\n";
|
| - $code .= " ${conditional}$template->Set(v8::String::NewSymbol(\"$name\"), v8::FunctionTemplate::New(${interfaceName}V8Internal::${name}MethodCallbackForMainWorld, v8Undefined(), ${signature}, $functionLength)$property_attributes);\n";
|
| + $code .= " ${conditional}$template->Set(v8::String::NewSymbol(\"$name\"), v8::FunctionTemplate::New(${implClassName}V8Internal::${name}MethodCallbackForMainWorld, v8Undefined(), ${signature}, $functionLength)$property_attributes);\n";
|
| $code .= " } else {\n";
|
| - $code .= " ${conditional}$template->Set(v8::String::NewSymbol(\"$name\"), v8::FunctionTemplate::New(${interfaceName}V8Internal::${name}MethodCallback, v8Undefined(), ${signature}, $functionLength)$property_attributes);\n";
|
| + $code .= " ${conditional}$template->Set(v8::String::NewSymbol(\"$name\"), v8::FunctionTemplate::New(${implClassName}V8Internal::${name}MethodCallback, v8Undefined(), ${signature}, $functionLength)$property_attributes);\n";
|
| $code .= " }\n";
|
| } else {
|
| - $code .= " ${conditional}$template->Set(v8::String::NewSymbol(\"$name\"), v8::FunctionTemplate::New(${interfaceName}V8Internal::${name}MethodCallback, v8Undefined(), ${signature}, $functionLength)$property_attributes);\n";
|
| + $code .= " ${conditional}$template->Set(v8::String::NewSymbol(\"$name\"), v8::FunctionTemplate::New(${implClassName}V8Internal::${name}MethodCallback, v8Undefined(), ${signature}, $functionLength)$property_attributes);\n";
|
| }
|
| $code .= "#endif // ${conditionalString}\n" if $conditionalString;
|
| return $code;
|
| @@ -3128,7 +3154,8 @@ sub GenerateImplementationIndexedProperty
|
| {
|
| my $interface = shift;
|
| my $interfaceName = $interface->name;
|
| - my $v8InterfaceName = "V8$interfaceName";
|
| + my $implClassName = GetImplClassName($interface);
|
| + my $v8ClassName = GetV8ClassName($interface);
|
|
|
| my $indexedGetterfunction = GetIndexedGetterFunction($interface);
|
| my $hasCustomIndexedSetter = $interface->extendedAttributes->{"CustomIndexedSetter"};
|
| @@ -3161,11 +3188,11 @@ sub GenerateImplementationIndexedProperty
|
| }
|
|
|
| my $code = "";
|
| - $code .= " desc->${setOn}Template()->SetIndexedPropertyHandler(${v8InterfaceName}::indexedPropertyGetter";
|
| - $code .= $hasCustomIndexedSetter ? ", ${v8InterfaceName}::indexedPropertySetter" : ", 0";
|
| + $code .= " desc->${setOn}Template()->SetIndexedPropertyHandler(${v8ClassName}::indexedPropertyGetter";
|
| + $code .= $hasCustomIndexedSetter ? ", ${v8ClassName}::indexedPropertySetter" : ", 0";
|
| $code .= ", 0"; # IndexedPropertyQuery -- not being used at the moment.
|
| - $code .= $hasDeleter ? ", ${v8InterfaceName}::indexedPropertyDeleter" : ", 0";
|
| - $code .= ", nodeCollectionIndexedPropertyEnumerator<${interfaceName}>" if $hasEnumerator;
|
| + $code .= $hasDeleter ? ", ${v8ClassName}::indexedPropertyDeleter" : ", 0";
|
| + $code .= ", nodeCollectionIndexedPropertyEnumerator<${implClassName}>" if $hasEnumerator;
|
| $code .= ");\n";
|
|
|
| if ($indexedGetterfunction && !$hasCustomIndexedGetter) {
|
| @@ -3186,10 +3213,10 @@ sub GenerateImplementationIndexedProperty
|
| }
|
|
|
| $implementation{nameSpaceWebCore}->add(<<END);
|
| -v8::Handle<v8::Value> ${v8InterfaceName}::indexedPropertyGetter(uint32_t index, const v8::AccessorInfo& info)
|
| +v8::Handle<v8::Value> ${v8ClassName}::indexedPropertyGetter(uint32_t index, const v8::AccessorInfo& info)
|
| {
|
| ASSERT(V8DOMWrapper::maybeDOMWrapper(info.Holder()));
|
| - ${interfaceName}* collection = toNative(info.Holder());
|
| + ${implClassName}* collection = toNative(info.Holder());
|
| $nativeType element = collection->$methodName(index);
|
| if ($isNull)
|
| return v8Undefined();
|
| @@ -3206,7 +3233,8 @@ sub GenerateImplementationNamedPropertyGetter
|
|
|
| my $subCode = "";
|
| my $interfaceName = $interface->name;
|
| - my $v8InterfaceName = "V8$interfaceName";
|
| + my $implClassName = GetImplClassName($interface);
|
| + my $v8ClassName = GetV8ClassName($interface);
|
|
|
| my $namedGetterFunction = GetNamedGetterFunction($interface);
|
| my $hasCustomNamedGetter = $interface->extendedAttributes->{"CustomNamedGetter"};
|
| @@ -3217,11 +3245,11 @@ sub GenerateImplementationNamedPropertyGetter
|
| AddToImplIncludes("bindings/v8/V8Collection.h");
|
| AddToImplIncludes("V8$returnType.h");
|
| $subCode .= <<END;
|
| - desc->InstanceTemplate()->SetNamedPropertyHandler(${v8InterfaceName}::namedPropertyGetter, 0, 0, 0, 0);
|
| + desc->InstanceTemplate()->SetNamedPropertyHandler(${v8ClassName}::namedPropertyGetter, 0, 0, 0, 0);
|
| END
|
|
|
| my $code .= <<END;
|
| -v8::Handle<v8::Value> ${v8InterfaceName}::namedPropertyGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
|
| +v8::Handle<v8::Value> ${v8ClassName}::namedPropertyGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
|
| {
|
| if (!info.Holder()->GetRealNamedPropertyInPrototypeChain(name).IsEmpty())
|
| return v8Undefined();
|
| @@ -3230,7 +3258,7 @@ v8::Handle<v8::Value> ${v8InterfaceName}::namedPropertyGetter(v8::Local<v8::Stri
|
|
|
| v8::Local<v8::Object> object = info.Holder();
|
| ASSERT(V8DOMWrapper::maybeDOMWrapper(object));
|
| - $interfaceName* collection = toNative(object);
|
| + $implClassName* collection = toNative(object);
|
|
|
| AtomicString propertyName = toWebCoreAtomicString(name);
|
| RefPtr<$returnType> element = collection->$methodName(propertyName);
|
| @@ -3259,12 +3287,12 @@ END
|
| $setOn = "Prototype";
|
| }
|
|
|
| - $subCode .= " desc->${setOn}Template()->SetNamedPropertyHandler(${v8InterfaceName}::namedPropertyGetter, ";
|
| - $subCode .= $hasCustomNamedSetter ? "${v8InterfaceName}::namedPropertySetter, " : "0, ";
|
| + $subCode .= " desc->${setOn}Template()->SetNamedPropertyHandler(${v8ClassName}::namedPropertyGetter, ";
|
| + $subCode .= $hasCustomNamedSetter ? "${v8ClassName}::namedPropertySetter, " : "0, ";
|
| # If there is a custom enumerator, there MUST be custom query to properly communicate property attributes.
|
| - $subCode .= $hasEnumerator ? "${v8InterfaceName}::namedPropertyQuery, " : "0, ";
|
| - $subCode .= $hasDeleter ? "${v8InterfaceName}::namedPropertyDeleter, " : "0, ";
|
| - $subCode .= $hasEnumerator ? "${v8InterfaceName}::namedPropertyEnumerator" : "0";
|
| + $subCode .= $hasEnumerator ? "${v8ClassName}::namedPropertyQuery, " : "0, ";
|
| + $subCode .= $hasDeleter ? "${v8ClassName}::namedPropertyDeleter, " : "0, ";
|
| + $subCode .= $hasEnumerator ? "${v8ClassName}::namedPropertyEnumerator" : "0";
|
| $subCode .= ");\n";
|
| }
|
|
|
| @@ -3276,10 +3304,10 @@ sub GenerateImplementationCustomCall
|
| my $interface = shift;
|
| my $code = "";
|
|
|
| - my $interfaceName = $interface->name;
|
| + my $v8ClassName = GetV8ClassName($interface);
|
|
|
| if ($interface->extendedAttributes->{"CustomCall"}) {
|
| - $code .= " desc->InstanceTemplate()->SetCallAsFunctionHandler(V8${interfaceName}::callAsFunctionCallback);\n";
|
| + $code .= " desc->InstanceTemplate()->SetCallAsFunctionHandler(${v8ClassName}::callAsFunctionCallback);\n";
|
| }
|
| return $code;
|
| }
|
| @@ -3302,7 +3330,8 @@ sub GenerateImplementation
|
| my $interface = shift;
|
| my $interfaceName = $interface->name;
|
| my $visibleInterfaceName = GetVisibleInterfaceName($interface);
|
| - my $v8InterfaceName = "V8$interfaceName";
|
| + my $implClassName = GetImplClassName($interface);
|
| + my $v8ClassName = GetV8ClassName($interface);
|
| my $nativeType = GetNativeTypeForConversions($interface);
|
| my $vtableNameGnu = GetGnuVTableNameForInterface($interface);
|
| my $vtableRefGnu = GetGnuVTableRefForInterface($interface);
|
| @@ -3316,9 +3345,9 @@ sub GenerateImplementation
|
|
|
| AddExtraIncludesForType($interfaceName);
|
|
|
| - my $toActiveDOMObject = InheritsExtendedAttribute($interface, "ActiveDOMObject") ? "${v8InterfaceName}::toActiveDOMObject" : "0";
|
| - my $toEventTarget = InheritsExtendedAttribute($interface, "EventTarget") ? "${v8InterfaceName}::toEventTarget" : "0";
|
| - my $rootForGC = NeedsCustomOpaqueRootForGC($interface) ? "${v8InterfaceName}::opaqueRootForGC" : "0";
|
| + my $toActiveDOMObject = InheritsExtendedAttribute($interface, "ActiveDOMObject") ? "${v8ClassName}::toActiveDOMObject" : "0";
|
| + my $toEventTarget = InheritsExtendedAttribute($interface, "EventTarget") ? "${v8ClassName}::toEventTarget" : "0";
|
| + my $rootForGC = NeedsCustomOpaqueRootForGC($interface) ? "${v8ClassName}::opaqueRootForGC" : "0";
|
|
|
| # Find the super descriptor.
|
| my $parentClass = "";
|
| @@ -3378,17 +3407,17 @@ END
|
| // These prototypes do not pick up the surrounding namespace, so drop out of WebCore as a workaround.
|
| } // namespace WebCore
|
| using WebCore::ScriptWrappable;
|
| -using WebCore::${v8InterfaceName};
|
| +using WebCore::${v8ClassName};
|
| END
|
| $code .= <<END if (GetNamespaceForInterface($interface) eq "WebCore");
|
| -using WebCore::${interfaceName};
|
| +using WebCore::${implClassName};
|
| END
|
| $code .= <<END;
|
| #endif
|
| -void initializeScriptWrappableForInterface(${interfaceName}* object)
|
| +void initializeScriptWrappableForInterface(${implClassName}* object)
|
| {
|
| if (ScriptWrappable::wrapperCanBeStoredInObject(object))
|
| - ScriptWrappable::setTypeInfoInObject(object, &${v8InterfaceName}::info);
|
| + ScriptWrappable::setTypeInfoInObject(object, &${v8ClassName}::info);
|
| }
|
| #if defined(OS_WIN)
|
| namespace WebCore {
|
| @@ -3397,8 +3426,8 @@ END
|
| $implementation{nameSpaceWebCore}->addHeader($code);
|
| }
|
|
|
| - my $code = "WrapperTypeInfo ${v8InterfaceName}::info = { ${v8InterfaceName}::GetTemplate, ${v8InterfaceName}::derefObject, $toActiveDOMObject, $toEventTarget, ";
|
| - $code .= "$rootForGC, ${v8InterfaceName}::installPerContextPrototypeProperties, $parentClassInfo, $WrapperTypePrototype };\n";
|
| + my $code = "WrapperTypeInfo ${v8ClassName}::info = { ${v8ClassName}::GetTemplate, ${v8ClassName}::derefObject, $toActiveDOMObject, $toEventTarget, ";
|
| + $code .= "$rootForGC, ${v8ClassName}::installPerContextPrototypeProperties, $parentClassInfo, $WrapperTypePrototype };\n";
|
| $implementation{nameSpaceWebCore}->addHeader($code);
|
|
|
| $implementation{nameSpaceInternal}->add("template <typename T> void V8_USE(T) { }\n\n");
|
| @@ -3466,10 +3495,10 @@ END
|
| if ($interface->extendedAttributes->{"TypedArray"}) {
|
| my $viewType = GetTypeNameOfExternalTypedArray($interface);
|
| $implementation{nameSpaceWebCore}->add(<<END);
|
| -v8::Handle<v8::Object> wrap($interfaceName* impl, v8::Handle<v8::Object> creationContext, v8::Isolate* isolate)
|
| +v8::Handle<v8::Object> wrap($implClassName* impl, v8::Handle<v8::Object> creationContext, v8::Isolate* isolate)
|
| {
|
| ASSERT(impl);
|
| - v8::Handle<v8::Object> wrapper = ${v8InterfaceName}::createWrapper(impl, creationContext, isolate);
|
| + v8::Handle<v8::Object> wrapper = ${v8ClassName}::createWrapper(impl, creationContext, isolate);
|
| if (!wrapper.IsEmpty())
|
| wrapper->SetIndexedPropertiesToExternalArrayData(impl->baseAddress(), $viewType, impl->length());
|
| return wrapper;
|
| @@ -3510,7 +3539,7 @@ END
|
| # for different calling context.
|
| if ($interface->extendedAttributes->{"CheckSecurity"} && $function->signature->extendedAttributes->{"DoNotCheckSecurity"}) {
|
| if (!HasCustomMethod($function->signature->extendedAttributes) || $function->{overloadIndex} == 1) {
|
| - GenerateDomainSafeFunctionGetter($function, $interfaceName);
|
| + GenerateDomainSafeFunctionGetter($function, $interface);
|
| $needsDomainSafeFunctionSetter = 1;
|
| }
|
| }
|
| @@ -3524,7 +3553,7 @@ END
|
| }
|
|
|
| if ($needsDomainSafeFunctionSetter) {
|
| - GenerateDomainSafeFunctionSetter($interfaceName);
|
| + GenerateDomainSafeFunctionSetter($interface);
|
| }
|
|
|
| # Attributes
|
| @@ -3567,7 +3596,7 @@ END
|
| if (@$attributes) {
|
| $has_attributes = 1;
|
| my $code = "";
|
| - $code .= "static const V8DOMConfiguration::BatchedAttribute ${v8InterfaceName}Attrs[] = {\n";
|
| + $code .= "static const V8DOMConfiguration::BatchedAttribute ${v8ClassName}Attrs[] = {\n";
|
| $code .= GenerateBatchedAttributeData($interface, $attributes);
|
| $code .= "};\n\n";
|
| $implementation{nameSpaceWebCore}->add($code);
|
| @@ -3585,18 +3614,18 @@ END
|
| next if $function->signature->name eq "";
|
| if (!$has_callbacks) {
|
| $has_callbacks = 1;
|
| - $code .= "static const V8DOMConfiguration::BatchedMethod ${v8InterfaceName}Methods[] = {\n";
|
| + $code .= "static const V8DOMConfiguration::BatchedMethod ${v8ClassName}Methods[] = {\n";
|
| }
|
| my $name = $function->signature->name;
|
| my $methodForMainWorld = "0";
|
| if ($function->signature->extendedAttributes->{"PerWorldBindings"}) {
|
| - $methodForMainWorld = "${interfaceName}V8Internal::${name}MethodCallbackForMainWorld";
|
| + $methodForMainWorld = "${implClassName}V8Internal::${name}MethodCallbackForMainWorld";
|
| }
|
| my $functionLength = GetFunctionLength($function);
|
| my $conditionalString = GenerateConditionalString($function->signature);
|
| $code .= "#if ${conditionalString}\n" if $conditionalString;
|
| $code .= <<END;
|
| - {"$name", ${interfaceName}V8Internal::${name}MethodCallback, ${methodForMainWorld}, ${functionLength}},
|
| + {"$name", ${implClassName}V8Internal::${name}MethodCallback, ${methodForMainWorld}, ${functionLength}},
|
| END
|
| $code .= "#endif\n" if $conditionalString;
|
| $num_callbacks++;
|
| @@ -3610,7 +3639,7 @@ END
|
| $code = "";
|
| if (@{$interface->constants}) {
|
| $has_constants = 1;
|
| - $code .= "static const V8DOMConfiguration::BatchedConstant ${v8InterfaceName}Consts[] = {\n";
|
| + $code .= "static const V8DOMConfiguration::BatchedConstant ${v8ClassName}Consts[] = {\n";
|
| }
|
| foreach my $constant (@{$interface->constants}) {
|
| my $name = $constant->name;
|
| @@ -3659,7 +3688,7 @@ END
|
|
|
| my $access_check = "";
|
| if ($interface->extendedAttributes->{"CheckSecurity"} && $interfaceName ne "DOMWindow") {
|
| - $access_check = "instance->SetAccessCheckCallbacks(${interfaceName}V8Internal::namedSecurityCheck, ${interfaceName}V8Internal::indexedSecurityCheck, v8::External::New(&${v8InterfaceName}::info));";
|
| + $access_check = "instance->SetAccessCheckCallbacks(${implClassName}V8Internal::namedSecurityCheck, ${implClassName}V8Internal::indexedSecurityCheck, v8::External::New(&${v8ClassName}::info));";
|
| }
|
|
|
| # For the DOMWindow interface, generate the shadow object template
|
| @@ -3684,7 +3713,7 @@ END
|
|
|
| # Generate the template configuration method
|
| $code = <<END;
|
| -static v8::Persistent<v8::FunctionTemplate> Configure${v8InterfaceName}Template(v8::Persistent<v8::FunctionTemplate> desc, v8::Isolate* isolate, WrapperWorldType currentWorldType)
|
| +static v8::Persistent<v8::FunctionTemplate> Configure${v8ClassName}Template(v8::Persistent<v8::FunctionTemplate> desc, v8::Isolate* isolate, WrapperWorldType currentWorldType)
|
| {
|
| desc->ReadOnlyPrototype();
|
|
|
| @@ -3694,17 +3723,17 @@ END
|
| my $enable_function = GetRuntimeEnableFunctionName($interface);
|
| $code .= <<END;
|
| if (!${enable_function}())
|
| - defaultSignature = V8DOMConfiguration::configureTemplate(desc, \"\", $parentClassTemplate, ${v8InterfaceName}::internalFieldCount, 0, 0, 0, 0, isolate, currentWorldType);
|
| + defaultSignature = V8DOMConfiguration::configureTemplate(desc, \"\", $parentClassTemplate, ${v8ClassName}::internalFieldCount, 0, 0, 0, 0, isolate, currentWorldType);
|
| else
|
| END
|
| }
|
| $code .= <<END;
|
| - defaultSignature = V8DOMConfiguration::configureTemplate(desc, \"${visibleInterfaceName}\", $parentClassTemplate, ${v8InterfaceName}::internalFieldCount,
|
| + defaultSignature = V8DOMConfiguration::configureTemplate(desc, \"${visibleInterfaceName}\", $parentClassTemplate, ${v8ClassName}::internalFieldCount,
|
| END
|
| # Set up our attributes if we have them
|
| if ($has_attributes) {
|
| $code .= <<END;
|
| - ${v8InterfaceName}Attrs, WTF_ARRAY_LENGTH(${v8InterfaceName}Attrs),
|
| + ${v8ClassName}Attrs, WTF_ARRAY_LENGTH(${v8ClassName}Attrs),
|
| END
|
| } else {
|
| $code .= <<END;
|
| @@ -3714,7 +3743,7 @@ END
|
|
|
| if ($has_callbacks) {
|
| $code .= <<END;
|
| - ${v8InterfaceName}Methods, WTF_ARRAY_LENGTH(${v8InterfaceName}Methods), isolate, currentWorldType);
|
| + ${v8ClassName}Methods, WTF_ARRAY_LENGTH(${v8ClassName}Methods), isolate, currentWorldType);
|
| END
|
| } else {
|
| $code .= <<END;
|
| @@ -3728,7 +3757,7 @@ END
|
| END
|
|
|
| if (IsConstructable($interface)) {
|
| - $code .= " desc->SetCallHandler(${v8InterfaceName}::constructorCallback);\n";
|
| + $code .= " desc->SetCallHandler(${v8ClassName}::constructorCallback);\n";
|
| my $interfaceLength = GetInterfaceLength($interface);
|
| $code .= " desc->SetLength(${interfaceLength});\n";
|
| }
|
| @@ -3754,7 +3783,7 @@ END
|
| $code .= "\n#if ${conditionalString}\n" if $conditionalString;
|
| $code .= " if (${enable_function}()) {\n";
|
| $code .= " static const V8DOMConfiguration::BatchedAttribute attrData =\\\n";
|
| - $code .= GenerateSingleBatchedAttribute($interfaceName, $runtime_attr, ";", " ");
|
| + $code .= GenerateSingleBatchedAttribute($interface, $runtime_attr, ";", " ");
|
| $code .= <<END;
|
| V8DOMConfiguration::configureAttribute(instance, proto, attrData, isolate, currentWorldType);
|
| }
|
| @@ -3800,7 +3829,7 @@ END
|
|
|
| if ($has_constants) {
|
| $code .= <<END;
|
| - V8DOMConfiguration::batchConfigureConstants(desc, proto, ${v8InterfaceName}Consts, WTF_ARRAY_LENGTH(${v8InterfaceName}Consts), isolate);
|
| + V8DOMConfiguration::batchConfigureConstants(desc, proto, ${v8ClassName}Consts, WTF_ARRAY_LENGTH(${v8ClassName}Consts), isolate);
|
| END
|
| }
|
|
|
| @@ -3844,7 +3873,7 @@ END
|
| $implementation{nameSpaceWebCore}->add($code);
|
|
|
| $implementation{nameSpaceWebCore}->add(<<END);
|
| -v8::Persistent<v8::FunctionTemplate> ${v8InterfaceName}::GetTemplate(v8::Isolate* isolate, WrapperWorldType currentWorldType)
|
| +v8::Persistent<v8::FunctionTemplate> ${v8ClassName}::GetTemplate(v8::Isolate* isolate, WrapperWorldType currentWorldType)
|
| {
|
| V8PerIsolateData* data = V8PerIsolateData::from(isolate);
|
| V8PerIsolateData::TemplateMap::iterator result = data->templateMap(currentWorldType).find(&info);
|
| @@ -3853,21 +3882,21 @@ v8::Persistent<v8::FunctionTemplate> ${v8InterfaceName}::GetTemplate(v8::Isolate
|
|
|
| v8::HandleScope handleScope;
|
| v8::Persistent<v8::FunctionTemplate> templ =
|
| - Configure${v8InterfaceName}Template(data->rawTemplate(&info, currentWorldType), isolate, currentWorldType);
|
| + Configure${v8ClassName}Template(data->rawTemplate(&info, currentWorldType), isolate, currentWorldType);
|
| data->templateMap(currentWorldType).add(&info, templ);
|
| return templ;
|
| }
|
|
|
| END
|
| $implementation{nameSpaceWebCore}->add(<<END);
|
| -bool ${v8InterfaceName}::HasInstance(v8::Handle<v8::Value> value, v8::Isolate* isolate, WrapperWorldType currentWorldType)
|
| +bool ${v8ClassName}::HasInstance(v8::Handle<v8::Value> value, v8::Isolate* isolate, WrapperWorldType currentWorldType)
|
| {
|
| return V8PerIsolateData::from(isolate)->hasInstance(&info, value, currentWorldType);
|
| }
|
|
|
| END
|
| $implementation{nameSpaceWebCore}->add(<<END);
|
| -bool ${v8InterfaceName}::HasInstanceInAnyWorld(v8::Handle<v8::Value> value, v8::Isolate* isolate)
|
| +bool ${v8ClassName}::HasInstanceInAnyWorld(v8::Handle<v8::Value> value, v8::Isolate* isolate)
|
| {
|
| return V8PerIsolateData::from(isolate)->hasInstance(&info, value, MainWorld)
|
| || V8PerIsolateData::from(isolate)->hasInstance(&info, value, IsolatedWorld)
|
| @@ -3879,7 +3908,7 @@ END
|
| if (@enabledPerContextAttributes) {
|
| my $code = "";
|
| $code .= <<END;
|
| -void ${v8InterfaceName}::installPerContextProperties(v8::Handle<v8::Object> instance, ${nativeType}* impl, v8::Isolate* isolate)
|
| +void ${v8ClassName}::installPerContextProperties(v8::Handle<v8::Object> instance, ${nativeType}* impl, v8::Isolate* isolate)
|
| {
|
| v8::Local<v8::Object> proto = v8::Local<v8::Object>::Cast(instance->GetPrototype());
|
| END
|
| @@ -3897,7 +3926,7 @@ END
|
| }
|
|
|
| $code .= " static const V8DOMConfiguration::BatchedAttribute attrData =\\\n";
|
| - $code .= GenerateSingleBatchedAttribute($interfaceName, $runtimeAttr, ";", " ");
|
| + $code .= GenerateSingleBatchedAttribute($interface, $runtimeAttr, ";", " ");
|
| $code .= <<END;
|
| V8DOMConfiguration::configureAttribute(instance, proto, attrData, isolate);
|
| END
|
| @@ -3914,7 +3943,7 @@ END
|
| if (@enabledPerContextFunctions) {
|
| my $code = "";
|
| $code .= <<END;
|
| -void ${v8InterfaceName}::installPerContextPrototypeProperties(v8::Handle<v8::Object> proto, v8::Isolate* isolate)
|
| +void ${v8ClassName}::installPerContextPrototypeProperties(v8::Handle<v8::Object> proto, v8::Isolate* isolate)
|
| {
|
| UNUSED_PARAM(proto);
|
| END
|
| @@ -3934,7 +3963,7 @@ END
|
| $code .= " if (context && context->isDocument() && ${enableFunction}(toDocument(context))) {\n";
|
| my $name = $runtimeFunc->signature->name;
|
| $code .= <<END;
|
| - proto->Set(v8::String::NewSymbol("${name}"), v8::FunctionTemplate::New(${interfaceName}V8Internal::${name}MethodCallback, v8Undefined(), defaultSignature, $functionLength)->GetFunction());
|
| + proto->Set(v8::String::NewSymbol("${name}"), v8::FunctionTemplate::New(${implClassName}V8Internal::${name}MethodCallback, v8Undefined(), defaultSignature, $functionLength)->GetFunction());
|
| END
|
| $code .= " }\n";
|
| $code .= "#endif // ${conditionalString}\n" if $conditionalString;
|
| @@ -3952,7 +3981,7 @@ END
|
| # from ActiveDOMObject, so don't try to cast it to ActiveDOMObject.
|
| my $returnValue = $interfaceName eq "MessagePort" ? "0" : "toNative(object)";
|
| $implementation{nameSpaceWebCore}->add(<<END);
|
| -ActiveDOMObject* ${v8InterfaceName}::toActiveDOMObject(v8::Handle<v8::Object> object)
|
| +ActiveDOMObject* ${v8ClassName}::toActiveDOMObject(v8::Handle<v8::Object> object)
|
| {
|
| return $returnValue;
|
| }
|
| @@ -3962,7 +3991,7 @@ END
|
|
|
| if (InheritsExtendedAttribute($interface, "EventTarget")) {
|
| $implementation{nameSpaceWebCore}->add(<<END);
|
| -EventTarget* ${v8InterfaceName}::toEventTarget(v8::Handle<v8::Object> object)
|
| +EventTarget* ${v8ClassName}::toEventTarget(v8::Handle<v8::Object> object)
|
| {
|
| return toNative(object);
|
| }
|
| @@ -3994,10 +4023,10 @@ v8::Persistent<v8::ObjectTemplate> V8DOMWindow::GetShadowObjectTemplate(v8::Isol
|
| END
|
| }
|
|
|
| - GenerateToV8Converters($interface, $v8InterfaceName, $nativeType);
|
| + GenerateToV8Converters($interface, $v8ClassName, $nativeType);
|
|
|
| $implementation{nameSpaceWebCore}->add(<<END);
|
| -void ${v8InterfaceName}::derefObject(void* object)
|
| +void ${v8ClassName}::derefObject(void* object)
|
| {
|
| static_cast<${nativeType}*>(object)->deref();
|
| }
|
| @@ -4008,13 +4037,13 @@ END
|
| sub GenerateHeaderContentHeader
|
| {
|
| my $interface = shift;
|
| - my $v8InterfaceName = "V8" . $interface->name;
|
| + my $v8ClassName = GetV8ClassName($interface);
|
| my $conditionalString = GenerateConditionalString($interface);
|
|
|
| my @headerContentHeader = split("\r", $headerTemplate);
|
|
|
| - push(@headerContentHeader, "\n#ifndef ${v8InterfaceName}" . "_h\n");
|
| - push(@headerContentHeader, "#define ${v8InterfaceName}" . "_h\n\n");
|
| + push(@headerContentHeader, "\n#ifndef ${v8ClassName}" . "_h\n");
|
| + push(@headerContentHeader, "#define ${v8ClassName}" . "_h\n\n");
|
| push(@headerContentHeader, "#if ${conditionalString}\n") if $conditionalString;
|
| return join "", @headerContentHeader;
|
| }
|
| @@ -4025,7 +4054,8 @@ sub GenerateCallbackHeader
|
| my $interface = shift;
|
|
|
| my $interfaceName = $interface->name;
|
| - my $v8InterfaceName = "V8$interfaceName";
|
| + my $implClassName = GetImplClassName($interface);
|
| + my $v8ClassName = GetV8ClassName($interface);
|
|
|
| $header{root}->addFooter("\n");
|
|
|
| @@ -4033,25 +4063,25 @@ sub GenerateCallbackHeader
|
| push(@unsortedIncludes, "#include \"bindings/v8/ActiveDOMCallback.h\"");
|
| push(@unsortedIncludes, "#include \"bindings/v8/DOMWrapperWorld.h\"");
|
| push(@unsortedIncludes, "#include \"bindings/v8/ScopedPersistent.h\"");
|
| - my $interfaceHeader = HeaderFileForInterface($interfaceName);
|
| + my $interfaceHeader = HeaderFileForInterface($interfaceName, $implClassName);
|
| push(@unsortedIncludes, "#include \"$interfaceHeader\"");
|
| push(@unsortedIncludes, "#include <v8.h>");
|
| push(@unsortedIncludes, "#include \"wtf/Forward.h\"");
|
| $header{includes}->add(join("\n", sort @unsortedIncludes));
|
| unshift(@{$header{nameSpaceWebCore}->{header}}, "\n");
|
| $header{nameSpaceWebCore}->addHeader("class ScriptExecutionContext;\n\n");
|
| - $header{class}->addHeader("class $v8InterfaceName : public $interfaceName, public ActiveDOMCallback {");
|
| + $header{class}->addHeader("class $v8ClassName : public $implClassName, public ActiveDOMCallback {");
|
| $header{class}->addFooter("};\n");
|
|
|
| $header{classPublic}->add(<<END);
|
| - static PassRefPtr<${v8InterfaceName}> create(v8::Handle<v8::Value> value, ScriptExecutionContext* context)
|
| + static PassRefPtr<${v8ClassName}> create(v8::Handle<v8::Value> value, ScriptExecutionContext* context)
|
| {
|
| ASSERT(value->IsObject());
|
| ASSERT(context);
|
| - return adoptRef(new ${v8InterfaceName}(v8::Handle<v8::Object>::Cast(value), context));
|
| + return adoptRef(new ${v8ClassName}(v8::Handle<v8::Object>::Cast(value), context));
|
| }
|
|
|
| - virtual ~${v8InterfaceName}();
|
| + virtual ~${v8ClassName}();
|
|
|
| END
|
|
|
| @@ -4085,7 +4115,7 @@ END
|
|
|
| END
|
| $header{classPrivate}->add(<<END);
|
| - ${v8InterfaceName}(v8::Handle<v8::Object>, ScriptExecutionContext*);
|
| + ${v8ClassName}(v8::Handle<v8::Object>, ScriptExecutionContext*);
|
|
|
| ScopedPersistent<v8::Object> m_callback;
|
| RefPtr<DOMWrapperWorld> m_world;
|
| @@ -4096,8 +4126,7 @@ sub GenerateCallbackImplementation
|
| {
|
| my $object = shift;
|
| my $interface = shift;
|
| - my $interfaceName = $interface->name;
|
| - my $v8InterfaceName = "V8$interfaceName";
|
| + my $v8ClassName = GetV8ClassName($interface);
|
|
|
| AddToImplIncludes("core/dom/ScriptExecutionContext.h");
|
| AddToImplIncludes("bindings/v8/V8Binding.h");
|
| @@ -4105,7 +4134,7 @@ sub GenerateCallbackImplementation
|
| AddToImplIncludes("wtf/Assertions.h");
|
|
|
| $implementation{nameSpaceWebCore}->add(<<END);
|
| -${v8InterfaceName}::${v8InterfaceName}(v8::Handle<v8::Object> callback, ScriptExecutionContext* context)
|
| +${v8ClassName}::${v8ClassName}(v8::Handle<v8::Object> callback, ScriptExecutionContext* context)
|
| : ActiveDOMCallback(context)
|
| , m_callback(callback)
|
| , m_world(DOMWrapperWorld::current())
|
| @@ -4115,7 +4144,7 @@ ${v8InterfaceName}::${v8InterfaceName}(v8::Handle<v8::Object> callback, ScriptEx
|
| END
|
|
|
| $implementation{nameSpaceWebCore}->add(<<END);
|
| -${v8InterfaceName}::~${v8InterfaceName}()
|
| +${v8ClassName}::~${v8ClassName}()
|
| {
|
| }
|
|
|
| @@ -4134,7 +4163,7 @@ END
|
| }
|
|
|
| AddIncludesForType($function->signature->type);
|
| - $code .= "\n" . GetNativeTypeForCallbacks($function->signature->type) . " ${v8InterfaceName}::" . $function->signature->name . "(";
|
| + $code .= "\n" . GetNativeTypeForCallbacks($function->signature->type) . " ${v8ClassName}::" . $function->signature->name . "(";
|
|
|
| my @args = ();
|
| my @argsCheck = ();
|
| @@ -4197,7 +4226,7 @@ sub BaseInterfaceName
|
| sub GenerateToV8Converters
|
| {
|
| my $interface = shift;
|
| - my $v8InterfaceName = shift;
|
| + my $v8ClassName = shift;
|
| my $nativeType = shift;
|
| my $interfaceName = $interface->name;
|
|
|
| @@ -4214,7 +4243,7 @@ sub GenerateToV8Converters
|
| my $code = "";
|
| $code .= <<END;
|
|
|
| -v8::Handle<v8::Object> ${v8InterfaceName}::createWrapper(${createWrapperArgumentType} impl, v8::Handle<v8::Object> creationContext, v8::Isolate* isolate)
|
| +v8::Handle<v8::Object> ${v8ClassName}::createWrapper(${createWrapperArgumentType} impl, v8::Handle<v8::Object> creationContext, v8::Isolate* isolate)
|
| {
|
| ASSERT(impl.get());
|
| ASSERT(DOMDataStore::getWrapper(impl.get(), isolate).IsEmpty());
|
| @@ -4262,14 +4291,14 @@ END
|
| sub GenerateSecurityCheckFunctions
|
| {
|
| my $interface = shift;
|
| - my $interfaceName = $interface->name;
|
| - my $v8InterfaceName = "V8$interfaceName";
|
| + my $implClassName = GetImplClassName($interface);
|
| + my $v8ClassName = GetV8ClassName($interface);
|
|
|
| AddToImplIncludes("bindings/v8/BindingSecurity.h");
|
| $implementation{nameSpaceInternal}->add(<<END);
|
| bool indexedSecurityCheck(v8::Local<v8::Object> host, uint32_t index, v8::AccessType type, v8::Local<v8::Value>)
|
| {
|
| - $interfaceName* imp = ${v8InterfaceName}::toNative(host);
|
| + $implClassName* imp = ${v8ClassName}::toNative(host);
|
| return BindingSecurity::shouldAllowAccessToFrame(imp->frame(), DoNotReportSecurityError);
|
| }
|
|
|
| @@ -4277,7 +4306,7 @@ END
|
| $implementation{nameSpaceInternal}->add(<<END);
|
| bool namedSecurityCheck(v8::Local<v8::Object> host, v8::Local<v8::Value> key, v8::AccessType type, v8::Local<v8::Value>)
|
| {
|
| - $interfaceName* imp = ${v8InterfaceName}::toNative(host);
|
| + $implClassName* imp = ${v8ClassName}::toNative(host);
|
| return BindingSecurity::shouldAllowAccessToFrame(imp->frame(), DoNotReportSecurityError);
|
| }
|
|
|
| @@ -4287,9 +4316,9 @@ END
|
| sub GetNativeTypeForConversions
|
| {
|
| my $interface = shift;
|
| - my $interfaceName = $interface->name;
|
| - $interfaceName = GetSVGTypeNeedingTearOff($interfaceName) if IsSVGTypeNeedingTearOff($interfaceName);
|
| - return $interfaceName;
|
| + my $implClassName = GetImplClassName($interface);
|
| + $implClassName = GetSVGTypeNeedingTearOff($interface->name) if IsSVGTypeNeedingTearOff($interface->name);
|
| + return $implClassName;
|
| }
|
|
|
| # See http://refspecs.linux-foundation.org/cxxabi-1.83.html.
|
| @@ -4410,10 +4439,12 @@ sub GenerateFunctionCallString
|
| my $function = shift;
|
| my $numberOfParameters = shift;
|
| my $indent = shift;
|
| - my $interfaceName = shift;
|
| + my $interface = shift;
|
| my $forMainWorldSuffix = shift;
|
| my %replacements = @_;
|
|
|
| + my $interfaceName = $interface->name;
|
| + my $implClassName = GetImplClassName($interface);
|
| my $name = $function->signature->name;
|
| my $returnType = $function->signature->type;
|
| my $nativeReturnType = GetNativeType($returnType, 0);
|
| @@ -4436,7 +4467,7 @@ sub GenerateFunctionCallString
|
| unshift(@arguments, "imp") if !$function->isStatic;
|
| $functionName = "${implementedBy}::${name}";
|
| } elsif ($function->isStatic) {
|
| - $functionName = "${interfaceName}::${name}";
|
| + $functionName = "${implClassName}::${name}";
|
| } else {
|
| $functionName = "imp->${name}";
|
| }
|
| @@ -4606,6 +4637,13 @@ sub GetNativeType
|
| return "RefPtr<NodeFilter>" if $type eq "NodeFilter";
|
| return "RefPtr<SerializedScriptValue>" if $type eq "SerializedScriptValue";
|
| return "RefPtr<XPathNSResolver>" if $type eq "XPathNSResolver";
|
| +
|
| + # We need to check [ImplementedBy] extended attribute for wrapper types.
|
| + if (IsWrapperType($type)) {
|
| + my $interface = ParseInterface($type);
|
| + my $implClassName = GetImplClassName($interface);
|
| + return $isParameter ? "${implClassName}*" : "RefPtr<${implClassName}>";
|
| + }
|
| return "RefPtr<${type}>" if IsRefPtrType($type) and not $isParameter;
|
|
|
| my $arrayType = GetArrayType($type);
|
| @@ -4834,6 +4872,7 @@ my %non_wrapper_types = (
|
| 'EventTarget' => 1,
|
| 'JSObject' => 1,
|
| 'MediaQueryListListener' => 1,
|
| + 'MessagePortArray' => 1,
|
| 'NodeFilter' => 1,
|
| 'SerializedScriptValue' => 1,
|
| 'any' => 1,
|
| @@ -4847,14 +4886,16 @@ my %non_wrapper_types = (
|
| 'unsigned int' => 1,
|
| 'unsigned long long' => 1,
|
| 'unsigned long' => 1,
|
| - 'unsigned short' => 1
|
| + 'unsigned short' => 1,
|
| + 'void' => 1
|
| );
|
|
|
|
|
| sub IsWrapperType
|
| {
|
| my $type = shift;
|
| - # FIXME: Should this return false for Sequence and Array types?
|
| + return 0 if GetArrayType($type);
|
| + return 0 if GetSequenceType($type);
|
| return 0 if IsEnumType($type);
|
| return !($non_wrapper_types{$type});
|
| }
|
| @@ -4863,10 +4904,6 @@ sub IsCallbackInterface
|
| {
|
| my $type = shift;
|
| return 0 unless IsWrapperType($type);
|
| - # FIXME: Those checks for Sequence and Array types should probably
|
| - # be moved to IsWrapperType().
|
| - return 0 if GetArrayType($type);
|
| - return 0 if GetSequenceType($type);
|
|
|
| my $idlFile = IDLFileForInterface($type)
|
| or die("Could NOT find IDL file for interface \"$type\"!\n");
|
| @@ -5116,10 +5153,10 @@ sub GetContextEnableFunction
|
|
|
| sub GetPassRefPtrType
|
| {
|
| - my $v8InterfaceName = shift;
|
| + my $v8ClassName = shift;
|
|
|
| - my $angleBracketSpace = $v8InterfaceName =~ />$/ ? " " : "";
|
| - return "PassRefPtr<${v8InterfaceName}${angleBracketSpace}>";
|
| + my $angleBracketSpace = $v8ClassName =~ />$/ ? " " : "";
|
| + return "PassRefPtr<${v8ClassName}${angleBracketSpace}>";
|
| }
|
|
|
| sub UpdateFile
|
| @@ -5562,7 +5599,7 @@ sub GenerateConditionalStringFromAttributeValue
|
| sub GenerateCompileTimeCheckForEnumsIfNeeded
|
| {
|
| my $interface = shift;
|
| - my $interfaceName = $interface->name;
|
| + my $implClassName = GetImplClassName($interface);
|
| my @checks = ();
|
| # If necessary, check that all constants are available as enums with the same value.
|
| if (!$interface->extendedAttributes->{"DoNotCheckConstants"} && @{$interface->constants}) {
|
| @@ -5575,9 +5612,9 @@ sub GenerateCompileTimeCheckForEnumsIfNeeded
|
| push(@checks, "#if ${conditionalString}\n") if $conditionalString;
|
|
|
| if ($constant->extendedAttributes->{"ImplementedBy"}) {
|
| - push(@checks, "COMPILE_ASSERT($value == " . $constant->extendedAttributes->{"ImplementedBy"} . "::$name, ${interfaceName}Enum${name}IsWrongUseDoNotCheckConstants);\n");
|
| + push(@checks, "COMPILE_ASSERT($value == " . $constant->extendedAttributes->{"ImplementedBy"} . "::$name, ${implClassName}Enum${name}IsWrongUseDoNotCheckConstants);\n");
|
| } else {
|
| - push(@checks, "COMPILE_ASSERT($value == ${interfaceName}::$name, ${interfaceName}Enum${name}IsWrongUseDoNotCheckConstants);\n");
|
| + push(@checks, "COMPILE_ASSERT($value == ${implClassName}::$name, ${implClassName}Enum${name}IsWrongUseDoNotCheckConstants);\n");
|
| }
|
|
|
| push(@checks, "#endif\n") if $conditionalString;
|
|
|