diff options
Diffstat (limited to 'WebCore/bindings/scripts')
63 files changed, 0 insertions, 22596 deletions
diff --git a/WebCore/bindings/scripts/CodeGenerator.pm b/WebCore/bindings/scripts/CodeGenerator.pm deleted file mode 100644 index 9a9e9d7..0000000 --- a/WebCore/bindings/scripts/CodeGenerator.pm +++ /dev/null @@ -1,580 +0,0 @@ -# -# WebKit IDL parser -# -# Copyright (C) 2005 Nikolas Zimmermann <wildfox@kde.org> -# Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com> -# Copyright (C) 2007, 2008, 2009, 2010 Apple Inc. All rights reserved. -# Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au> -# Copyright (C) Research In Motion Limited 2010. All rights reserved. -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public -# License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. -# -# You should have received a copy of the GNU Library General Public License -# along with this library; see the file COPYING.LIB. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02110-1301, USA. -# - -package CodeGenerator; - -use strict; - -use File::Find; - -my $useDocument = ""; -my $useGenerator = ""; -my $useOutputDir = ""; -my $useOutputHeadersDir = ""; -my $useDirectories = ""; -my $useLayerOnTop = 0; -my $preprocessor; -my $writeDependencies = 0; -my $defines = ""; - -my $codeGenerator = 0; - -my $verbose = 0; - -my %numericTypeHash = ("int" => 1, "short" => 1, "long" => 1, "long long" => 1, - "unsigned int" => 1, "unsigned short" => 1, - "unsigned long" => 1, "unsigned long long" => 1, - "float" => 1, "double" => 1); - -my %primitiveTypeHash = ( "boolean" => 1, "void" => 1, "Date" => 1); - -my %stringTypeHash = ("DOMString" => 1, "AtomicString" => 1); - -my %nonPointerTypeHash = ("DOMTimeStamp" => 1, "CompareHow" => 1, "SVGPaintType" => 1); - -my %svgAnimatedTypeHash = ("SVGAnimatedAngle" => 1, "SVGAnimatedBoolean" => 1, - "SVGAnimatedEnumeration" => 1, "SVGAnimatedInteger" => 1, - "SVGAnimatedLength" => 1, "SVGAnimatedLengthList" => 1, - "SVGAnimatedNumber" => 1, "SVGAnimatedNumberList" => 1, - "SVGAnimatedPreserveAspectRatio" => 1, - "SVGAnimatedRect" => 1, "SVGAnimatedString" => 1, - "SVGAnimatedTransformList" => 1); - -my %svgAttributesInHTMLHash = ("class" => 1, "id" => 1, "onabort" => 1, "onclick" => 1, - "onerror" => 1, "onload" => 1, "onmousedown" => 1, - "onmousemove" => 1, "onmouseout" => 1, "onmouseover" => 1, - "onmouseup" => 1, "onresize" => 1, "onscroll" => 1, - "onunload" => 1); - -my %svgTypeNeedingTearOff = ( - "SVGAngle" => "SVGPropertyTearOff<SVGAngle>", - "SVGLength" => "SVGPropertyTearOff<SVGLength>", - "SVGLengthList" => "SVGListPropertyTearOff<SVGLengthList>", - "SVGMatrix" => "SVGPropertyTearOff<SVGMatrix>", - "SVGNumber" => "SVGPropertyTearOff<float>", - "SVGNumberList" => "SVGListPropertyTearOff<SVGNumberList>", - "SVGPathSegList" => "SVGPathSegListPropertyTearOff", - "SVGPoint" => "SVGPropertyTearOff<FloatPoint>", - "SVGPointList" => "SVGListPropertyTearOff<SVGPointList>", - "SVGPreserveAspectRatio" => "SVGPropertyTearOff<SVGPreserveAspectRatio>", - "SVGRect" => "SVGPropertyTearOff<FloatRect>", - "SVGStringList" => "SVGStaticListPropertyTearOff<SVGStringList>", - "SVGTransform" => "SVGPropertyTearOff<SVGTransform>", - "SVGTransformList" => "SVGTransformListPropertyTearOff" -); - -my %svgTypeWithWritablePropertiesNeedingTearOff = ( - "SVGPoint" => 1, - "SVGMatrix" => 1 -); - -# Cache of IDL file pathnames. -my $idlFiles; - -# Default constructor -sub new -{ - my $object = shift; - my $reference = { }; - - $useDirectories = shift; - $useGenerator = shift; - $useOutputDir = shift; - $useOutputHeadersDir = shift; - $useLayerOnTop = shift; - $preprocessor = shift; - $writeDependencies = shift; - $verbose = shift; - - bless($reference, $object); - return $reference; -} - -sub StripModule($) -{ - my $object = shift; - my $name = shift; - $name =~ s/[a-zA-Z0-9]*:://; - return $name; -} - -sub ProcessDocument -{ - my $object = shift; - $useDocument = shift; - $defines = shift; - - my $ifaceName = "CodeGenerator" . $useGenerator; - require $ifaceName . ".pm"; - - # Dynamically load external code generation perl module - $codeGenerator = $ifaceName->new($object, $useOutputDir, $useOutputHeadersDir, $useLayerOnTop, $preprocessor, $writeDependencies, $verbose); - unless (defined($codeGenerator)) { - my $classes = $useDocument->classes; - foreach my $class (@$classes) { - print "Skipping $useGenerator code generation for IDL interface \"" . $class->name . "\".\n" if $verbose; - } - return; - } - - # Start the actual code generation! - $codeGenerator->GenerateModule($useDocument, $defines); - - my $classes = $useDocument->classes; - foreach my $class (@$classes) { - print "Generating $useGenerator bindings code for IDL interface \"" . $class->name . "\"...\n" if $verbose; - $codeGenerator->GenerateInterface($class, $defines); - } - - $codeGenerator->finish(); -} - -sub ForAllParents -{ - my $object = shift; - my $dataNode = shift; - my $beforeRecursion = shift; - my $afterRecursion = shift; - my $parentsOnly = shift; - - my $recurse; - $recurse = sub { - my $interface = shift; - - for (@{$interface->parents}) { - my $interfaceName = $object->StripModule($_); - my $parentInterface = $object->ParseInterface($interfaceName, $parentsOnly); - - if ($beforeRecursion) { - &$beforeRecursion($parentInterface) eq 'prune' and next; - } - &$recurse($parentInterface); - &$afterRecursion($parentInterface) if $afterRecursion; - } - }; - - &$recurse($dataNode); -} - -sub AddMethodsConstantsAndAttributesFromParentClasses -{ - # Add to $dataNode all of its inherited interface members, except for those - # inherited through $dataNode'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. If $collectDirectParents is true, then - # even the names of $dataNode's first listed parent and its ancestors will - # be appended to $parents. - - my $object = shift; - my $dataNode = shift; - my $parents = shift; - my $collectDirectParents = shift; - - my $first = 1; - - $object->ForAllParents($dataNode, sub { - my $interface = shift; - - if ($first) { - # Ignore first parent class, already handled by the generation itself. - $first = 0; - - if ($collectDirectParents) { - # Just collect the names of the direct ancestor interfaces, - # if necessary. - push(@$parents, $interface->name); - $object->ForAllParents($interface, sub { - my $interface = shift; - push(@$parents, $interface->name); - }, undef, 1); - } - - # Prune the recursion here. - return 'prune'; - } - - # Collect the name of this additional parent. - push(@$parents, $interface->name) if $parents; - - print " | |> -> Inheriting " - . @{$interface->constants} . " constants, " - . @{$interface->functions} . " functions, " - . @{$interface->attributes} . " attributes...\n | |>\n" if $verbose; - - # Add this parent's members to $dataNode. - push(@{$dataNode->constants}, @{$interface->constants}); - push(@{$dataNode->functions}, @{$interface->functions}); - push(@{$dataNode->attributes}, @{$interface->attributes}); - }); -} - -sub GetMethodsAndAttributesFromParentClasses -{ - # For the passed interface, recursively parse all parent - # IDLs in order to find out all inherited properties/methods. - - my $object = shift; - my $dataNode = shift; - - my @parentList = (); - - $object->ForAllParents($dataNode, undef, sub { - my $interface = shift; - - my $hash = { - "name" => $interface->name, - "functions" => $interface->functions, - "attributes" => $interface->attributes - }; - - unshift(@parentList, $hash); - }); - - return @parentList; -} - -sub IDLFileForInterface -{ - my $object = shift; - my $interfaceName = shift; - - unless ($idlFiles) { - my $sourceRoot = $ENV{SOURCE_ROOT}; - my @directories = map { $_ = "$sourceRoot/$_" if $sourceRoot && -d "$sourceRoot/$_"; $_ } @$useDirectories; - - $idlFiles = { }; - - my $wanted = sub { - $idlFiles->{$1} = $File::Find::name if /^([A-Z].*)\.idl$/; - $File::Find::prune = 1 if /^\../; - }; - find($wanted, @directories); - } - - return $idlFiles->{$interfaceName}; -} - -sub ParseInterface -{ - my $object = shift; - my $interfaceName = shift; - my $parentsOnly = shift; - - return undef if $interfaceName eq 'Object'; - - # Step #1: Find the IDL file associated with 'interface' - my $filename = $object->IDLFileForInterface($interfaceName) - or die("Could NOT find IDL file for interface \"$interfaceName\"!\n"); - - print " | |> Parsing parent IDL \"$filename\" for interface \"$interfaceName\"\n" if $verbose; - - # Step #2: Parse the found IDL file (in quiet mode). - my $parser = IDLParser->new(1); - my $document = $parser->Parse($filename, $defines, $preprocessor, $parentsOnly); - - foreach my $interface (@{$document->classes}) { - return $interface if $interface->name eq $interfaceName; - } - - die("Could NOT find interface definition for $interfaceName in $filename"); -} - -# Helpers for all CodeGenerator***.pm modules - -sub AvoidInclusionOfType -{ - my $object = shift; - my $type = shift; - - # Special case: SVGPoint.h / SVGNumber.h do not exist. - return 1 if $type eq "SVGPoint" or $type eq "SVGNumber"; - return 0; -} - -sub IsNumericType -{ - my $object = shift; - my $type = shift; - - return 1 if $numericTypeHash{$type}; - return 0; -} - -sub IsPrimitiveType -{ - my $object = shift; - my $type = shift; - - return 1 if $primitiveTypeHash{$type}; - return 1 if $numericTypeHash{$type}; - return 0; -} - -sub IsStringType -{ - my $object = shift; - my $type = shift; - - return 1 if $stringTypeHash{$type}; - return 0; -} - -sub IsNonPointerType -{ - my $object = shift; - my $type = shift; - - return 1 if $nonPointerTypeHash{$type} or $primitiveTypeHash{$type} or $numericTypeHash{$type}; - return 0; -} - -sub IsSVGTypeNeedingTearOff -{ - my $object = shift; - my $type = shift; - - return 1 if exists $svgTypeNeedingTearOff{$type}; - return 0; -} - -sub IsSVGTypeWithWritablePropertiesNeedingTearOff -{ - my $object = shift; - my $type = shift; - - return 1 if $svgTypeWithWritablePropertiesNeedingTearOff{$type}; - return 0; -} - -sub GetSVGTypeNeedingTearOff -{ - my $object = shift; - my $type = shift; - - return $svgTypeNeedingTearOff{$type} if exists $svgTypeNeedingTearOff{$type}; - return undef; -} - -sub GetSVGWrappedTypeNeedingTearOff -{ - my $object = shift; - my $type = shift; - - my $svgTypeNeedingTearOff = $object->GetSVGTypeNeedingTearOff($type); - return $svgTypeNeedingTearOff if not $svgTypeNeedingTearOff; - - if ($svgTypeNeedingTearOff =~ /SVGPropertyTearOff/) { - $svgTypeNeedingTearOff =~ s/SVGPropertyTearOff<//; - } elsif ($svgTypeNeedingTearOff =~ /SVGListPropertyTearOff/) { - $svgTypeNeedingTearOff =~ s/SVGListPropertyTearOff<//; - } elsif ($svgTypeNeedingTearOff =~ /SVGStaticListPropertyTearOff/) { - $svgTypeNeedingTearOff =~ s/SVGStaticListPropertyTearOff<//; - } elsif ($svgTypeNeedingTearOff =~ /SVGTransformListPropertyTearOff/) { - $svgTypeNeedingTearOff =~ s/SVGTransformListPropertyTearOff<//; - } - - $svgTypeNeedingTearOff =~ s/>//; - return $svgTypeNeedingTearOff; -} - -sub IsSVGAnimatedType -{ - my $object = shift; - my $type = shift; - - return 1 if $svgAnimatedTypeHash{$type}; - return 0; -} - -# Uppercase the first letter while respecting WebKit style guidelines. -# E.g., xmlEncoding becomes XMLEncoding, but xmlllang becomes Xmllang. -sub WK_ucfirst -{ - my ($object, $param) = @_; - my $ret = ucfirst($param); - $ret =~ s/Xml/XML/ if $ret =~ /^Xml[^a-z]/; - - return $ret; -} - -# Lowercase the first letter while respecting WebKit style guidelines. -# URL becomes url, but SetURL becomes setURL. -sub WK_lcfirst -{ - my ($object, $param) = @_; - my $ret = lcfirst($param); - $ret =~ s/hTML/html/ if $ret =~ /^hTML/; - $ret =~ s/uRL/url/ if $ret =~ /^uRL/; - $ret =~ s/jS/js/ if $ret =~ /^jS/; - $ret =~ s/xML/xml/ if $ret =~ /^xML/; - $ret =~ s/xSLT/xslt/ if $ret =~ /^xSLT/; - - # For HTML5 FileSystem API Flags attributes. - # (create is widely used to instantiate an object and must be avoided.) - $ret =~ s/^create/isCreate/ if $ret =~ /^create$/; - $ret =~ s/^exclusive/isExclusive/ if $ret =~ /^exclusive$/; - - return $ret; -} - -# Return the C++ namespace that a given attribute name string is defined in. -sub NamespaceForAttributeName -{ - my ($object, $interfaceName, $attributeName) = @_; - return "SVGNames" if $interfaceName =~ /^SVG/ && !$svgAttributesInHTMLHash{$attributeName}; - return "HTMLNames"; -} - -# Identifies overloaded functions and for each function adds an array with -# links to its respective overloads (including itself). -sub LinkOverloadedFunctions -{ - my ($object, $dataNode) = @_; - - my %nameToFunctionsMap = (); - foreach my $function (@{$dataNode->functions}) { - my $name = $function->signature->name; - $nameToFunctionsMap{$name} = [] if !exists $nameToFunctionsMap{$name}; - push(@{$nameToFunctionsMap{$name}}, $function); - $function->{overloads} = $nameToFunctionsMap{$name}; - $function->{overloadIndex} = @{$nameToFunctionsMap{$name}}; - } -} - -sub AttributeNameForGetterAndSetter -{ - my ($generator, $attribute) = @_; - - my $attributeName = $attribute->signature->name; - my $attributeType = $generator->StripModule($attribute->signature->type); - - # Avoid clash with C++ keyword. - $attributeName = "_operator" if $attributeName eq "operator"; - - # SVGAElement defines a non-virtual "String& target() const" method which clashes with "virtual String target() const" in Element. - # To solve this issue the SVGAElement method was renamed to "svgTarget", take care of that when calling this method. - $attributeName = "svgTarget" if $attributeName eq "target" and $attributeType eq "SVGAnimatedString"; - - # SVG animated types need to use a special attribute name. - # The rest of the special casing for SVG animated types is handled in the language-specific code generators. - $attributeName .= "Animated" if $generator->IsSVGAnimatedType($attributeType); - - return $attributeName; -} - -sub ContentAttributeName -{ - my ($generator, $implIncludes, $interfaceName, $attribute) = @_; - - my $contentAttributeName = $attribute->signature->extendedAttributes->{"Reflect"}; - return undef if !$contentAttributeName; - - $contentAttributeName = lc $generator->AttributeNameForGetterAndSetter($attribute) if $contentAttributeName eq "1"; - - my $namespace = $generator->NamespaceForAttributeName($interfaceName, $contentAttributeName); - - $implIncludes->{"${namespace}.h"} = 1; - return "WebCore::${namespace}::${contentAttributeName}Attr"; -} - -sub GetterExpressionPrefix -{ - my ($generator, $implIncludes, $interfaceName, $attribute) = @_; - - my $contentAttributeName = $generator->ContentAttributeName($implIncludes, $interfaceName, $attribute); - - if (!$contentAttributeName) { - return $generator->WK_lcfirst($generator->AttributeNameForGetterAndSetter($attribute)) . "("; - } - - my $functionName; - if ($attribute->signature->extendedAttributes->{"URL"}) { - if ($attribute->signature->extendedAttributes->{"NonEmpty"}) { - $functionName = "getNonEmptyURLAttribute"; - } else { - $functionName = "getURLAttribute"; - } - } elsif ($attribute->signature->type eq "boolean") { - $functionName = "hasAttribute"; - } elsif ($attribute->signature->type eq "long") { - $functionName = "getIntegralAttribute"; - } elsif ($attribute->signature->type eq "unsigned long") { - $functionName = "getUnsignedIntegralAttribute"; - } else { - $functionName = "getAttribute"; - } - - return "$functionName($contentAttributeName" -} - -sub SetterExpressionPrefix -{ - my ($generator, $implIncludes, $interfaceName, $attribute) = @_; - - my $contentAttributeName = $generator->ContentAttributeName($implIncludes, $interfaceName, $attribute); - - if (!$contentAttributeName) { - return "set" . $generator->WK_ucfirst($generator->AttributeNameForGetterAndSetter($attribute)) . "("; - } - - my $functionName; - if ($attribute->signature->type eq "boolean") { - $functionName = "setBooleanAttribute"; - } elsif ($attribute->signature->type eq "long") { - $functionName = "setIntegralAttribute"; - } elsif ($attribute->signature->type eq "unsigned long") { - $functionName = "setUnsignedIntegralAttribute"; - } else { - $functionName = "setAttribute"; - } - - return "$functionName($contentAttributeName, " -} - -sub ShouldCheckEnums -{ - my $dataNode = shift; - return not $dataNode->extendedAttributes->{"DontCheckEnums"}; -} - -sub GenerateCompileTimeCheckForEnumsIfNeeded -{ - my ($object, $dataNode) = @_; - my $interfaceName = $dataNode->name; - my @checks = (); - # If necessary, check that all constants are available as enums with the same value. - if (ShouldCheckEnums($dataNode) && @{$dataNode->constants}) { - push(@checks, "\n"); - foreach my $constant (@{$dataNode->constants}) { - my $name = $constant->name; - my $value = $constant->value; - push(@checks, "COMPILE_ASSERT($value == ${interfaceName}::$name, ${interfaceName}Enum${name}IsWrongUseDontCheckEnums);\n"); - } - push(@checks, "\n"); - } - return @checks; -} - -1; diff --git a/WebCore/bindings/scripts/CodeGeneratorCPP.pm b/WebCore/bindings/scripts/CodeGeneratorCPP.pm deleted file mode 100644 index 9b3f21e..0000000 --- a/WebCore/bindings/scripts/CodeGeneratorCPP.pm +++ /dev/null @@ -1,960 +0,0 @@ - -# Copyright (C) 2005, 2006 Nikolas Zimmermann <zimmermann@kde.org> -# Copyright (C) 2006 Anders Carlsson <andersca@mac.com> -# Copyright (C) 2006, 2007 Samuel Weinig <sam@webkit.org> -# Copyright (C) 2006 Alexey Proskuryakov <ap@webkit.org> -# Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. -# Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au> -# Copyright (C) Research In Motion Limited 2010. All rights reserved. -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public -# License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. -# -# You should have received a copy of the GNU Library General Public License -# aint with this library; see the file COPYING.LIB. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02110-1301, USA. -# - -package CodeGeneratorCPP; - -# Global Variables -my $module = ""; -my $outputDir = ""; - -my @headerContentHeader = (); -my @headerContent = (); -my %headerForwardDeclarations = (); - -my @implContentHeader = (); -my @implContent = (); -my %implIncludes = (); - -# Constants -my $exceptionInit = "WebCore::ExceptionCode ec = 0;"; -my $exceptionRaiseOnError = "webDOMRaiseError(static_cast<WebDOMExceptionCode>(ec));"; - -# Default License Templates -my $headerLicenseTemplate = << "EOF"; -/* - * Copyright (C) Research In Motion Limited 2010. All rights reserved. - * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. - * Copyright (C) 2006 Samuel Weinig <sam.weinig\@gmail.com> - * Copyright (C) Research In Motion Limited 2010. All rights reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ -EOF - -my $implementationLicenseTemplate = << "EOF"; -/* - * This file is part of the WebKit open source project. - * This file has been generated by generate-bindings.pl. DO NOT MODIFY! - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ -EOF - -# Default constructor -sub new -{ - my $object = shift; - my $reference = { }; - - $codeGenerator = shift; - $outputDir = shift; - shift; # $outputHeadersDir - shift; # $useLayerOnTop - shift; # $preprocessor - shift; # $writeDependencies - - bless($reference, $object); - return $reference; -} - -sub finish -{ - my $object = shift; -} - -# Params: 'domClass' struct -sub GenerateInterface -{ - my $object = shift; - my $dataNode = shift; - my $defines = shift; - - my $name = $dataNode->name; - my $className = GetClassName($name); - my $parentClassName = "WebDOM" . GetParentImplClassName($dataNode); - - # Start actual generation. - $object->GenerateHeader($dataNode); - $object->GenerateImplementation($dataNode); - - # Write changes. - $object->WriteData("WebDOM" . $name); -} - -# Params: 'idlDocument' struct -sub GenerateModule -{ - my $object = shift; - my $dataNode = shift; - - $module = $dataNode->module; -} - -sub GetClassName -{ - my $name = $codeGenerator->StripModule(shift); - - # special cases - return "WebDOMString" if $codeGenerator->IsStringType($name) or $name eq "SerializedScriptValue"; - return "WebDOMObject" if $name eq "DOMObject"; - return "bool" if $name eq "boolean"; - return $name if $codeGenerator->IsPrimitiveType($name); - return "WebDOMCustomVoidCallback" if $name eq "VoidCallback"; - - return "WebDOM$name"; -} - -sub GetImplClassName -{ - return $codeGenerator->StripModule(shift); -} - -sub GetParentImplClassName -{ - my $dataNode = shift; - - if (@{$dataNode->parents} eq 0) { - return "EventTarget" if $dataNode->extendedAttributes->{"EventTarget"}; - return "Object"; - } - - return $codeGenerator->StripModule($dataNode->parents(0)); -} - -sub GetParent -{ - my $dataNode = shift; - my $numParents = @{$dataNode->parents}; - - my $parent = ""; - if ($numParents eq 0) { - $parent = "WebDOMObject"; - $parent = "WebDOMEventTarget" if $dataNode->extendedAttributes->{"EventTarget"}; - } elsif ($numParents eq 1) { - my $parentName = $codeGenerator->StripModule($dataNode->parents(0)); - $parent = "WebDOM" . $parentName; - } else { - my @parents = @{$dataNode->parents}; - my $firstParent = $codeGenerator->StripModule(shift(@parents)); - $parent = "WebDOM" . $firstParent; - } - - return $parent; -} - -sub ShouldSkipTypeInImplementation -{ - my $typeInfo = shift; - - return 1 if $typeInfo->signature->extendedAttributes->{"Custom"} - and !$typeInfo->signature->extendedAttributes->{"NoCPPCustom"}; - - return 1 if $typeInfo->signature->extendedAttributes->{"CustomArgumentHandling"} - or $typeInfo->signature->extendedAttributes->{"CustomGetter"} - or $typeInfo->signature->extendedAttributes->{"NeedsUserGestureCheck"} - or $typeInfo->signature->extendedAttributes->{"CPPCustom"}; - - # FIXME: We don't generate bindings for SVG related interfaces yet - return 1 if $typeInfo->signature->name =~ /getSVGDocument/; - - return 1 if $typeInfo->signature->name =~ /Constructor/; - return 0; -} - -sub ShouldSkipTypeInHeader -{ - my $typeInfo = shift; - - # FIXME: We currently ignore any attribute/function needing custom code - return 1 if $typeInfo->signature->extendedAttributes->{"CustomArgumentHandling"} - or $typeInfo->signature->extendedAttributes->{"CustomGetter"}; - - # FIXME: We don't generate bindings for SVG related interfaces yet - return 1 if $typeInfo->signature->name =~ /getSVGDocument/; - - return 1 if $typeInfo->signature->name =~ /Constructor/; - return 0; -} - -sub GetCPPType -{ - my $type = shift; - my $useConstReference = shift; - my $name = GetClassName($type); - - return "int" if $type eq "long"; - return "unsigned" if $name eq "unsigned long"; - return "unsigned short" if $type eq "CompareHow"; - - if ($codeGenerator->IsStringType($type)) { - if ($useConstReference) { - return "const $name&"; - } - - return $name; - } - - return $name if $codeGenerator->IsPrimitiveType($type) or $type eq "DOMTimeStamp"; - return "const $name&" if $useConstReference; - return $name; -} - -sub ConversionNeeded -{ - my $type = $codeGenerator->StripModule(shift); - return !$codeGenerator->IsNonPointerType($type) && !$codeGenerator->IsStringType($type); -} - -sub GetCPPTypeGetter -{ - my $argName = shift; - my $type = $codeGenerator->StripModule(shift); - - return $argName if $codeGenerator->IsPrimitiveType($type) or $codeGenerator->IsStringType($type); - return "static_cast<WebCore::Range::CompareHow>($argName)" if $type eq "CompareHow"; - return "WebCore::SerializedScriptValue::create(WTF::String($argName))" if $type eq "SerializedScriptValue"; - return "toWebCore($argName)"; -} - -sub AddForwardDeclarationsForType -{ - my $type = $codeGenerator->StripModule(shift); - my $public = shift; - - return if $codeGenerator->IsNonPointerType($type) or $codeGenerator->IsStringType($type); - - my $class = GetClassName($type); - $headerForwardDeclarations{$class} = 1 if $public; -} - -sub AddIncludesForType -{ - my $type = $codeGenerator->StripModule(shift); - - return if $codeGenerator->IsNonPointerType($type); - return if $type =~ /Constructor/; - - if ($codeGenerator->IsStringType($type)) { - $implIncludes{"wtf/text/AtomicString.h"} = 1; - $implIncludes{"KURL.h"} = 1; - $implIncludes{"WebDOMString.h"} = 1; - return; - } - - if ($type eq "DOMObject") { - $implIncludes{"WebDOMObject.h"} = 1; - return; - } - - if ($type eq "EventListener") { - $implIncludes{"WebNativeEventListener.h"} = 1; - return; - } - - if ($type eq "SerializedScriptValue") { - $implIncludes{"SerializedScriptValue.h"} = 1; - return; - } - - if ($type eq "VoidCallback") { - $implIncludes{"WebDOMCustomVoidCallback.h"} = 1; - return; - } - - $implIncludes{"Node.h"} = 1 if $type eq "NodeList"; - $implIncludes{"CSSMutableStyleDeclaration.h"} = 1 if $type eq "CSSStyleDeclaration"; - - # Default, include the same named file (the implementation) and the same name prefixed with "WebDOM". - $implIncludes{"$type.h"} = 1 unless $type eq "DOMObject"; - $implIncludes{"WebDOM$type.h"} = 1; -} - -sub GenerateConditionalStringFromAttributeValue -{ - my $conditional = shift; - if ($conditional =~ /&/) { - return "ENABLE(" . join(") && ENABLE(", split(/&/, $conditional)) . ")"; - } elsif ($conditional =~ /\|/) { - return "ENABLE(" . join(") || ENABLE(", split(/\|/, $conditional)) . ")"; - } else { - return "ENABLE(" . $conditional . ")"; - } -} - -sub GenerateConditionalString -{ - my $node = shift; - my $conditional = $node->extendedAttributes->{"Conditional"}; - if ($conditional) { - return GenerateConditionalStringFromAttributeValue($conditional); - } else { - return ""; - } -} - -sub GenerateHeader -{ - my $object = shift; - my $dataNode = shift; - - my $interfaceName = $dataNode->name; - my $className = GetClassName($interfaceName); - my $implClassName = GetImplClassName($interfaceName); - my $implClassNameWithNamespace = "WebCore::" . $implClassName; - - my $parentName = ""; - $parentName = GetParent($dataNode); - - my $numConstants = @{$dataNode->constants}; - my $numAttributes = @{$dataNode->attributes}; - my $numFunctions = @{$dataNode->functions}; - - # - Add default header template - @headerContentHeader = split("\r", $headerLicenseTemplate); - push(@headerContentHeader, "\n#ifndef $className" . "_h"); - push(@headerContentHeader, "\n#define $className" . "_h\n\n"); - - my $conditionalString = GenerateConditionalString($dataNode); - push(@headerContentHeader, "#if ${conditionalString}\n\n") if $conditionalString; - - # - INCLUDES - - - my %headerIncludes = (); - $headerIncludes{"WebDOMString.h"} = 1; - $headerIncludes{"$parentName.h"} = 1; - foreach my $include (sort keys(%headerIncludes)) { - push(@headerContentHeader, "#include <$include>\n"); - } - - push(@headerContent, "class $className"); - push(@headerContent, " : public $parentName") if $parentName; - push(@headerContent, " {\n"); - push(@headerContent, "public:\n"); - - # Constructor - push(@headerContent, " $className();\n"); - push(@headerContent, " explicit $className($implClassNameWithNamespace*);\n"); - - # Copy constructor and assignment operator on classes which have the d-ptr - if ($parentName eq "WebDOMObject") { - push(@headerContent, " $className(const $className&);\n"); - push(@headerContent, " ${className}& operator=(const $className&);\n"); - } - - # Destructor - if ($parentName eq "WebDOMObject") { - push(@headerContent, " virtual ~$className();\n"); - } else { - push(@headerContent, " virtual ~$className() { }\n"); - } - - push(@headerContent, "\n"); - $headerForwardDeclarations{$implClassNameWithNamespace} = 1; - - # - Add constants. - if ($numConstants > 0) { - my @headerConstants = (); - - # FIXME: we need a way to include multiple enums. - foreach my $constant (@{$dataNode->constants}) { - my $constantName = $constant->name; - my $constantValue = $constant->value; - - my $output = "WEBDOM_" . $constantName . " = " . $constantValue; - push(@headerConstants, " " . $output); - } - - my $combinedConstants = join(",\n", @headerConstants); - - push(@headerContent, " "); - push(@headerContent, "enum {\n"); - push(@headerContent, $combinedConstants); - push(@headerContent, "\n "); - push(@headerContent, "};\n\n"); - } - - my @headerAttributes = (); - - # - Add attribute getters/setters. - if ($numAttributes > 0) { - foreach my $attribute (@{$dataNode->attributes}) { - next if ShouldSkipTypeInHeader($attribute); - - my $attributeConditionalString = GenerateConditionalString($attribute->signature); - my $attributeName = $attribute->signature->name; - my $attributeType = GetCPPType($attribute->signature->type, 0); - my $attributeIsReadonly = ($attribute->type =~ /^readonly/); - my $property = ""; - - $property .= "#if ${attributeConditionalString}\n" if $attributeConditionalString; - $property .= " " . $attributeType . ($attributeType =~ /\*$/ ? "" : " ") . $attributeName . "() const"; - - my $availabilityMacro = ""; - my $declarationSuffix = ";\n"; - - AddForwardDeclarationsForType($attribute->signature->type, 1); - - $attributeType = GetCPPType($attribute->signature->type, 1); - my $setterName = "set" . ucfirst($attributeName); - - $property .= $declarationSuffix; - push(@headerAttributes, $property); - if (!$attributeIsReadonly and !$attribute->signature->extendedAttributes->{"Replaceable"}) { - $property = " void $setterName($attributeType)"; - $property .= $declarationSuffix; - push(@headerAttributes, $property); - } - - push(@headerAttributes, "#endif\n") if $attributeConditionalString; - } - push(@headerContent, @headerAttributes) if @headerAttributes > 0; - } - - my @headerFunctions = (); - my @deprecatedHeaderFunctions = (); - my @interfaceFunctions = (); - - # - Add functions. - if ($numFunctions > 0) { - foreach my $function (@{$dataNode->functions}) { - next if ShouldSkipTypeInHeader($function); - my $functionName = $function->signature->name; - - my $returnType = GetCPPType($function->signature->type, 0); - my $numberOfParameters = @{$function->parameters}; - my %typesToForwardDeclare = ($function->signature->type => 1); - - my $parameterIndex = 0; - my $functionSig = "$returnType $functionName("; - my $methodName = $functionName; - foreach my $param (@{$function->parameters}) { - my $paramName = $param->name; - my $paramType = GetCPPType($param->type, 1); - $typesToForwardDeclare{$param->type} = 1; - - $functionSig .= ", " if $parameterIndex >= 1; - $functionSig .= "$paramType $paramName"; - $parameterIndex++; - } - $functionSig .= ")"; - if ($dataNode->extendedAttributes->{"PureInterface"}) { - push(@interfaceFunctions, " virtual " . $functionSig . " = 0;\n"); - } - my $functionDeclaration = $functionSig; - $functionDeclaration .= ";\n"; - - foreach my $type (keys %typesToForwardDeclare) { - # add any forward declarations to the public header if a deprecated version will be generated - AddForwardDeclarationsForType($type, 1); - } - - push(@headerFunctions, " "); - push(@headerFunctions, $functionDeclaration); - } - - if (@headerFunctions > 0) { - push(@headerContent, "\n") if @headerAttributes > 0; - push(@headerContent, @headerFunctions); - } - } - - push(@headerContent, "\n"); - push(@headerContent, " $implClassNameWithNamespace* impl() const;\n"); - - if ($parentName eq "WebDOMObject") { - push(@headerContent, "\nprotected:\n"); - push(@headerContent, " struct ${className}Private;\n"); - push(@headerContent, " ${className}Private* m_impl;\n"); - } - - push(@headerContent, "};\n\n"); - - # for PureInterface classes also add the interface that the client code needs to - # implement - if ($dataNode->extendedAttributes->{"PureInterface"}) { - push(@headerContent, "class WebUser$interfaceName {\n"); - push(@headerContent, "public:\n"); - push(@headerContent, " virtual void ref() = 0;\n"); - push(@headerContent, " virtual void deref() = 0;\n\n"); - push(@headerContent, @interfaceFunctions); - push(@headerContent, "\nprotected:\n"); - push(@headerContent, " virtual ~WebUser$interfaceName() {}\n"); - push(@headerContent, "};\n\n"); - } - - push(@headerContent, "WebCore::$implClassName* toWebCore(const $className&);\n"); - push(@headerContent, "$className toWebKit(WebCore::$implClassName*);\n"); - if ($dataNode->extendedAttributes->{"PureInterface"}) { - push(@headerContent, "$className toWebKit(WebUser$interfaceName*);\n"); - } - push(@headerContent, "\n#endif\n"); - push(@headerContent, "#endif // ${conditionalString}\n\n") if $conditionalString; -} - -sub AddEarlyReturnStatement -{ - my $returnType = shift; - - if (!defined($returnType) or $returnType eq "void") { - $returnType = ""; - } elsif ($codeGenerator->IsPrimitiveType($returnType)) { - $returnType = " 0"; - } elsif ($returnType eq "bool") { - $returnType = " false"; - } else { - $returnType = " $returnType()"; - } - - # TODO: We could set exceptions here, if we want that - my $statement = " if (!impl())\n"; - $statement .= " return$returnType;\n\n"; - return $statement; -} - -sub AddReturnStatement -{ - my $typeInfo = shift; - my $returnValue = shift; - - # Used to invoke KURLs "const String&" operator - if ($codeGenerator->IsStringType($typeInfo->signature->type)) { - return " return static_cast<const WTF::String&>($returnValue);\n"; - } - - return " return $returnValue;\n"; -} - -sub GenerateImplementation -{ - my $object = shift; - my $dataNode = shift; - - my @ancestorInterfaceNames = (); - - if (@{$dataNode->parents} > 1) { - $codeGenerator->AddMethodsConstantsAndAttributesFromParentClasses($dataNode, \@ancestorInterfaceNames); - } - - my $interfaceName = $dataNode->name; - my $className = GetClassName($interfaceName); - my $implClassName = GetImplClassName($interfaceName); - my $parentImplClassName = GetParentImplClassName($dataNode); - my $implClassNameWithNamespace = "WebCore::" . $implClassName; - my $baseClass = "WebDOM$parentImplClassName"; - my $conditional = $dataNode->extendedAttributes->{"Conditional"}; - - my $numAttributes = @{$dataNode->attributes}; - my $numFunctions = @{$dataNode->functions}; - - # - Add default header template. - @implContentHeader = split("\r", $implementationLicenseTemplate); - - # - INCLUDES - - push(@implContentHeader, "\n#include \"config.h\"\n"); - my $conditionalString = GenerateConditionalString($dataNode); - push(@implContentHeader, "\n#if ${conditionalString}\n\n") if $conditionalString; - push(@implContentHeader, "#include \"$className.h\"\n\n"); - - $implIncludes{"WebExceptionHandler.h"} = 1; - $implIncludes{"$implClassName.h"} = 1; - @implContent = (); - - push(@implContent, "#include <wtf/GetPtr.h>\n"); - push(@implContent, "#include <wtf/RefPtr.h>\n\n"); - - # Private datastructure, encapsulating WebCore types - if ($baseClass eq "WebDOMObject") { - push(@implContent, "struct ${className}::${className}Private {\n"); - push(@implContent, " ${className}Private($implClassNameWithNamespace* object = 0)\n"); - push(@implContent, " : impl(object)\n"); - push(@implContent, " {\n"); - push(@implContent, " }\n\n"); - push(@implContent, " RefPtr<$implClassNameWithNamespace> impl;\n"); - push(@implContent, "};\n\n"); - } - - # Constructor - push(@implContent, "${className}::$className()\n"); - push(@implContent, " : ${baseClass}()\n"); - push(@implContent, " , m_impl(0)\n") if ($baseClass eq "WebDOMObject"); - push(@implContent, "{\n"); - push(@implContent, "}\n\n"); - - push(@implContent, "${className}::$className($implClassNameWithNamespace* impl)\n"); - if ($baseClass eq "WebDOMObject") { - push(@implContent, " : ${baseClass}()\n"); - push(@implContent, " , m_impl(new ${className}Private(impl))\n"); - push(@implContent, "{\n"); - push(@implContent, "}\n\n"); - - push(@implContent, "${className}::${className}(const ${className}& copy)\n"); - push(@implContent, " : ${baseClass}()\n"); - push(@implContent, "{\n"); - push(@implContent, " m_impl = copy.impl() ? new ${className}Private(copy.impl()) : 0;\n"); - push(@implContent, "}\n\n"); - - push(@implContent, "${className}& ${className}::operator\=(const ${className}& copy)\n"); - push(@implContent, "{\n"); - push(@implContent, " delete m_impl;\n"); - push(@implContent, " m_impl = copy.impl() ? new ${className}Private(copy.impl()) : 0;\n"); - push(@implContent, " return *this;\n"); - push(@implContent, "}\n\n"); - - push(@implContent, "$implClassNameWithNamespace* ${className}::impl() const\n"); - push(@implContent, "{\n"); - push(@implContent, " return m_impl ? m_impl->impl.get() : 0;\n"); - push(@implContent, "}\n\n"); - - # Destructor - push(@implContent, "${className}::~$className()\n"); - push(@implContent, "{\n"); - push(@implContent, " delete m_impl;\n"); - push(@implContent, " m_impl = 0;\n"); - push(@implContent, "}\n\n"); - } else { - push(@implContent, " : ${baseClass}(impl)\n"); - push(@implContent, "{\n"); - push(@implContent, "}\n\n"); - - push(@implContent, "$implClassNameWithNamespace* ${className}::impl() const\n"); - push(@implContent, "{\n"); - push(@implContent, " return static_cast<$implClassNameWithNamespace*>(${baseClass}::impl());\n"); - push(@implContent, "}\n\n"); - } - - # START implementation - %attributeNames = (); - - # - Attributes - if ($numAttributes > 0) { - foreach my $attribute (@{$dataNode->attributes}) { - next if ShouldSkipTypeInImplementation($attribute); - AddIncludesForType($attribute->signature->type); - - my $idlType = $codeGenerator->StripModule($attribute->signature->type); - - my $attributeName = $attribute->signature->name; - my $attributeType = GetCPPType($attribute->signature->type, 0); - my $attributeIsReadonly = ($attribute->type =~ /^readonly/); - - $attributeNames{$attributeName} = 1; - - # - GETTER - my $getterSig = "$attributeType $className\:\:$attributeName() const\n"; - my $hasGetterException = @{$attribute->getterExceptions}; - my $getterContentHead = "impl()->" . $codeGenerator->GetterExpressionPrefix(\%implIncludes, $interfaceName, $attribute); - my $getterContentTail = ")"; - - # Special cases - my @customGetterContent = (); - if ($attribute->signature->extendedAttributes->{"ConvertToString"}) { - $getterContentHead = "WTF::String::number(" . $getterContentHead; - $getterContentTail .= ")"; - } elsif ($attribute->signature->type eq "SerializedScriptValue") { - $getterContentHead = "$getterContentHead"; - $getterContentTail .= "->toString()"; - } elsif (ConversionNeeded($attribute->signature->type)) { - $getterContentHead = "toWebKit(WTF::getPtr($getterContentHead"; - $getterContentTail .= "))"; - } - - my $getterContent; - if ($hasGetterException) { - $getterContent = $getterContentHead . "ec" . $getterContentTail; - } else { - $getterContent = $getterContentHead . $getterContentTail; - } - - my $attributeConditionalString = GenerateConditionalString($attribute->signature); - push(@implContent, "#if ${attributeConditionalString}\n") if $attributeConditionalString; - - push(@implContent, $getterSig); - push(@implContent, "{\n"); - push(@implContent, AddEarlyReturnStatement($attributeType)); - push(@implContent, @customGetterContent); - if ($hasGetterException) { - # Differentiated between when the return type is a pointer and - # not for white space issue (ie. Foo *result vs. int result). - if ($attributeType =~ /\*$/) { - $getterContent = $attributeType . "result = " . $getterContent; - } else { - $getterContent = $attributeType . " result = " . $getterContent; - } - - push(@implContent, " $exceptionInit\n"); - push(@implContent, " $getterContent;\n"); - push(@implContent, " $exceptionRaiseOnError\n"); - push(@implContent, AddReturnStatement($attribute, "result")); - } else { - push(@implContent, AddReturnStatement($attribute, $getterContent)); - } - push(@implContent, "}\n\n"); - - # - SETTER - if (!$attributeIsReadonly and !$attribute->signature->extendedAttributes->{"Replaceable"}) { - # Exception handling - my $hasSetterException = @{$attribute->setterExceptions}; - - my $coreSetterName = "set" . $codeGenerator->WK_ucfirst($attributeName); - my $setterName = "set" . ucfirst($attributeName); - my $argName = "new" . ucfirst($attributeName); - my $arg = GetCPPTypeGetter($argName, $idlType); - - # The definition of ConvertToString is flipped for the setter - if ($attribute->signature->extendedAttributes->{"ConvertToString"}) { - $arg = "WTF::String($arg).toInt()"; - } - - my $attributeType = GetCPPType($attribute->signature->type, 1); - push(@implContent, "void $className\:\:$setterName($attributeType $argName)\n"); - push(@implContent, "{\n"); - push(@implContent, AddEarlyReturnStatement()); - - push(@implContent, " $exceptionInit\n") if $hasSetterException; - my $ec = $hasSetterException ? ", ec" : ""; - my $setterExpressionPrefix = $codeGenerator->SetterExpressionPrefix(\%implIncludes, $interfaceName, $attribute); - push(@implContent, " impl()->$setterExpressionPrefix$arg$ec);\n"); - push(@implContent, " $exceptionRaiseOnError\n") if $hasSetterException; - push(@implContent, "}\n\n"); - } - - push(@implContent, "#endif\n") if $attributeConditionalString; - } - } - - # - Functions - if ($numFunctions > 0) { - foreach my $function (@{$dataNode->functions}) { - # Treat PureInterface as Custom as well, since the WebCore versions will take a script context as well - next if ShouldSkipTypeInImplementation($function) || $dataNode->extendedAttributes->{"PureInterface"}; - AddIncludesForType($function->signature->type); - - my $functionName = $function->signature->name; - my $returnType = GetCPPType($function->signature->type, 0); - my $hasParameters = @{$function->parameters}; - my $raisesExceptions = @{$function->raisesExceptions}; - - my @parameterNames = (); - my @needsAssert = (); - my %needsCustom = (); - - my $parameterIndex = 0; - - my $functionSig = "$returnType $className\:\:$functionName("; - foreach my $param (@{$function->parameters}) { - my $paramName = $param->name; - my $paramType = GetCPPType($param->type, 1); - - # make a new parameter name if the original conflicts with a property name - $paramName = "in" . ucfirst($paramName) if $attributeNames{$paramName}; - - AddIncludesForType($param->type); - - my $idlType = $codeGenerator->StripModule($param->type); - my $implGetter = GetCPPTypeGetter($paramName, $idlType); - - push(@parameterNames, $implGetter); - $needsCustom{"NodeToReturn"} = $paramName if $param->extendedAttributes->{"Return"}; - - unless ($codeGenerator->IsPrimitiveType($idlType) or $codeGenerator->IsStringType($idlType)) { - push(@needsAssert, " ASSERT($paramName);\n"); - } - - $functionSig .= ", " if $parameterIndex >= 1; - $functionSig .= "$paramType $paramName"; - $parameterIndex++; - } - - $functionSig .= ")"; - - my @functionContent = (); - push(@parameterNames, "ec") if $raisesExceptions; - my $content = "impl()->" . $codeGenerator->WK_lcfirst($functionName) . "(" . join(", ", @parameterNames) . ")"; - - if ($returnType eq "void") { - # Special case 'void' return type. - if ($raisesExceptions) { - push(@functionContent, " $exceptionInit\n"); - push(@functionContent, " $content;\n"); - push(@functionContent, " $exceptionRaiseOnError\n"); - } else { - push(@functionContent, " $content;\n"); - } - } elsif (defined $needsCustom{"NodeToReturn"}) { - # TODO: This is important to enable, once we care about custom code! - - # Special case the insertBefore, replaceChild, removeChild - # and appendChild functions from DOMNode - my $toReturn = $needsCustom{"NodeToReturn"}; - if ($raisesExceptions) { - push(@functionContent, " $exceptionInit\n"); - push(@functionContent, " if ($content)\n"); - push(@functionContent, " return $toReturn;\n"); - push(@functionContent, " $exceptionRaiseOnError\n"); - push(@functionContent, " return $className();\n"); - } else { - push(@functionContent, " if ($content)\n"); - push(@functionContent, " return $toReturn;\n"); - push(@functionContent, " return NULL;\n"); - } - } else { - if (ConversionNeeded($function->signature->type)) { - $content = "toWebKit(WTF::getPtr($content))"; - } - - if ($raisesExceptions) { - # Differentiated between when the return type is a pointer and - # not for white space issue (ie. Foo *result vs. int result). - if ($returnType =~ /\*$/) { - $content = $returnType . "result = " . $content; - } else { - $content = $returnType . " result = " . $content; - } - - push(@functionContent, " $exceptionInit\n"); - push(@functionContent, " $content;\n"); - push(@functionContent, " $exceptionRaiseOnError\n"); - push(@functionContent, " return result;\n"); - } else { - push(@functionContent, " return $content;\n"); - } - } - - push(@implContent, "$functionSig\n"); - push(@implContent, "{\n"); - push(@implContent, AddEarlyReturnStatement($returnType)); - push(@implContent, @functionContent); - push(@implContent, "}\n\n"); - - # Clear the hash - %needsCustom = (); - } - } - - # END implementation - - # Generate internal interfaces - push(@implContent, "WebCore::$implClassName* toWebCore(const $className& wrapper)\n"); - push(@implContent, "{\n"); - push(@implContent, " return wrapper.impl();\n"); - push(@implContent, "}\n\n"); - - push(@implContent, "$className toWebKit(WebCore::$implClassName* value)\n"); - push(@implContent, "{\n"); - push(@implContent, " return $className(value);\n"); - push(@implContent, "}\n"); - - # - End the ifdef conditional if necessary - push(@implContent, "\n#endif // ${conditionalString}\n") if $conditionalString; -} - -# Internal helper -sub WriteData -{ - my $object = shift; - my $name = shift; - - # Open files for writing... - my $headerFileName = "$outputDir/" . $name . ".h"; - my $implFileName = "$outputDir/" . $name . ".cpp"; - - # Remove old files. - unlink($headerFileName); - unlink($implFileName); - - # Write public header. - open(HEADER, ">$headerFileName") or die "Couldn't open file $headerFileName"; - - print HEADER @headerContentHeader; - print HEADER "\n"; - foreach my $class (sort keys(%headerForwardDeclarations)) { - if ($class =~ /::/) { - my $namespacePart = $class; - $namespacePart =~ s/::.*//; - - my $classPart = $class; - $classPart =~ s/${namespacePart}:://; - - print HEADER "namespace $namespacePart {\nclass $classPart;\n};\n\n"; - } else { - print HEADER "class $class;\n" - } - } - - my $hasForwardDeclarations = keys(%headerForwardDeclarations); - print HEADER "\n" if $hasForwardDeclarations; - print HEADER @headerContent; - close(HEADER); - - @headerContentHeader = (); - @headerContent = (); - %headerForwardDeclarations = (); - - # Write implementation file. - open(IMPL, ">$implFileName") or die "Couldn't open file $implFileName"; - - print IMPL @implContentHeader; - - foreach my $include (sort keys(%implIncludes)) { - # "className.h" is already included right after config.h, silence check-webkit-style - next if $include eq "$name.h"; - print IMPL "#include \"$include\"\n"; - } - - print IMPL @implContent; - close(IMPL); - - @implContentHeader = (); - @implContent = (); - %implIncludes = (); -} - -1; diff --git a/WebCore/bindings/scripts/CodeGeneratorGObject.pm b/WebCore/bindings/scripts/CodeGeneratorGObject.pm deleted file mode 100644 index e2773b8..0000000 --- a/WebCore/bindings/scripts/CodeGeneratorGObject.pm +++ /dev/null @@ -1,1440 +0,0 @@ -# Copyright (C) 2008 Luke Kenneth Casson Leighton <lkcl@lkcl.net> -# Copyright (C) 2008 Martin Soto <soto@freedesktop.org> -# Copyright (C) 2008 Alp Toker <alp@atoker.com> -# Copyright (C) 2009 Adam Dingle <adam@yorba.org> -# Copyright (C) 2009 Jim Nelson <jim@yorba.org> -# Copyright (C) 2009, 2010 Igalia S.L. -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public -# License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. -# -# You should have received a copy of the GNU Library General Public License -# along with this library; see the file COPYING.LIB. If not, write to -# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. - -package CodeGeneratorGObject; - -# Global Variables -my %implIncludes = (); -my %hdrIncludes = (); - -my $defineTypeMacro = "G_DEFINE_TYPE"; -my $defineTypeInterfaceImplementation = ")"; -my @txtEventListeners = (); -my @txtInstallEventListeners = (); -my @txtInstallSignals = (); -my @txtInstallProps = (); -my @txtSetProps = (); -my @txtGetProps = (); - -my $className = ""; - -# Default constructor -sub new { - my $object = shift; - my $reference = { }; - - $codeGenerator = shift; - $outputDir = shift; - mkdir $outputDir; - - bless($reference, $object); -} - -sub finish { -} - -my $licenceTemplate = << "EOF"; -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ -EOF - -sub GenerateModule { -} - -sub GetParentClassName { - my $dataNode = shift; - - return "WebKitDOMObject" if @{$dataNode->parents} eq 0; - return "WebKitDOM" . $codeGenerator->StripModule($dataNode->parents(0)); -} - -# From String::CamelCase 0.01 -sub camelize -{ - my $s = shift; - join('', map{ ucfirst $_ } split(/(?<=[A-Za-z])_(?=[A-Za-z])|\b/, $s)); -} - -sub decamelize -{ - my $s = shift; - $s =~ s{([^a-zA-Z]?)([A-Z]*)([A-Z])([a-z]?)}{ - my $fc = pos($s)==0; - my ($p0,$p1,$p2,$p3) = ($1,lc$2,lc$3,$4); - my $t = $p0 || $fc ? $p0 : '_'; - $t .= $p3 ? $p1 ? "${p1}_$p2$p3" : "$p2$p3" : "$p1$p2"; - $t; - }ge; - $s; -} - -sub FixUpDecamelizedName { - my $classname = shift; - - # FIXME: try to merge this somehow with the fixes in ClassNameToGobjectType - $classname =~ s/x_path/xpath/; - $classname =~ s/web_kit/webkit/; - $classname =~ s/htmli_frame/html_iframe/; - - return $classname; -} - -sub ClassNameToGObjectType { - my $className = shift; - my $CLASS_NAME = uc(decamelize($className)); - # Fixup: with our prefix being 'WebKitDOM' decamelize can't get - # WebKitDOMCSS and similar names right, so we have to fix it - # manually. - $CLASS_NAME =~ s/DOMCSS/DOM_CSS/; - $CLASS_NAME =~ s/DOMHTML/DOM_HTML/; - $CLASS_NAME =~ s/DOMDOM/DOM_DOM/; - $CLASS_NAME =~ s/DOMCDATA/DOM_CDATA/; - $CLASS_NAME =~ s/DOMX_PATH/DOM_XPATH/; - $CLASS_NAME =~ s/DOM_WEB_KIT/DOM_WEBKIT/; - $CLASS_NAME =~ s/DOMUI/DOM_UI/; - $CLASS_NAME =~ s/HTMLI_FRAME/HTML_IFRAME/; - return $CLASS_NAME; -} - -sub GetParentGObjType { - my $dataNode = shift; - - return "WEBKIT_TYPE_DOM_OBJECT" if @{$dataNode->parents} eq 0; - return "WEBKIT_TYPE_DOM_" . ClassNameToGObjectType($codeGenerator->StripModule($dataNode->parents(0))); -} - -sub GetClassName { - my $name = $codeGenerator->StripModule(shift); - - return "WebKitDOM$name"; -} - -sub GetCoreObject { - my ($interfaceName, $name, $parameter) = @_; - - return "WebCore::${interfaceName}* $name = WebKit::core($parameter);"; -} - -sub SkipAttribute { - my $attribute = shift; - - if ($attribute->signature->extendedAttributes->{"CustomGetter"} || - $attribute->signature->extendedAttributes->{"CustomSetter"} || - $attribute->signature->extendedAttributes->{"Replaceable"}) { - return 1; - } - - my $propType = $attribute->signature->type; - if ($propType =~ /Constructor$/) { - return 1; - } - - # This is for DOMWindow.idl location attribute - if ($attribute->signature->name eq "location") { - return 1; - } - - # This is for HTMLInput.idl valueAsDate - if ($attribute->signature->name eq "valueAsDate") { - return 1; - } - - # This is for DOMWindow.idl Crypto attribute - if ($attribute->signature->type eq "Crypto") { - return 1; - } - - return 0; -} - -sub SkipFunction { - my $function = shift; - my $decamelize = shift; - my $prefix = shift; - - my $functionName = "webkit_dom_" . $decamelize . "_" . $prefix . decamelize($function->signature->name); - my $isCustomFunction = $function->signature->extendedAttributes->{"Custom"} || - $function->signature->extendedAttributes->{"CustomArgumentHandling"}; - - if ($isCustomFunction && - $functionName ne "webkit_dom_node_replace_child" && - $functionName ne "webkit_dom_node_insert_before" && - $functionName ne "webkit_dom_node_remove_child" && - $functionName ne "webkit_dom_node_append_child" && - $functionName ne "webkit_dom_html_collection_item" && - $functionName ne "webkit_dom_html_collection_named_item") { - return 1; - } - - if ($function->signature->name eq "getSVGDocument") { - return 1; - } - - if ($function->signature->name eq "getCSSCanvasContext") { - return 1; - } - - # Skip functions that have ["Callback"] parameters, because this - # code generator doesn't know how to auto-generate callbacks. - # Skip functions that have "MediaQueryListListener" parameters, because this - # code generator doesn't know how to auto-generate MediaQueryListListener. - foreach my $param (@{$function->parameters}) { - if ($param->extendedAttributes->{"Callback"} || - $param->type eq "MediaQueryListListener") { - return 1; - } - } - - return 0; -} - -# Name type used in the g_value_{set,get}_* functions -sub GetGValueTypeName { - my $type = shift; - - my %types = ("DOMString", "string", - "DOMTimeStamp", "uint", - "float", "float", - "double", "double", - "boolean", "boolean", - "char", "char", - "long", "long", - "long long", "int64", - "short", "int", - "uchar", "uchar", - "unsigned", "uint", - "int", "int", - "unsigned int", "uint", - "unsigned long long", "uint64", - "unsigned long", "ulong", - "unsigned short", "ushort"); - - return $types{$type} ? $types{$type} : "object"; -} - -# Name type used in C declarations -sub GetGlibTypeName { - my $type = shift; - my $name = GetClassName($type); - - my %types = ("DOMString", "gchar*", - "DOMTimeStamp", "guint32", - "CompareHow", "gushort", - "float", "gfloat", - "double", "gdouble", - "boolean", "gboolean", - "char", "gchar", - "long", "glong", - "long long", "gint64", - "short", "gshort", - "uchar", "guchar", - "unsigned", "guint", - "int", "gint", - "unsigned int", "guint", - "unsigned long", "gulong", - "unsigned long long", "guint64", - "unsigned short", "gushort", - "void", "void"); - - return $types{$type} ? $types{$type} : "$name*"; -} - -sub IsGDOMClassType { - my $type = shift; - - return 0 if $codeGenerator->IsNonPointerType($type) || $codeGenerator->IsStringType($type); - return 1; -} - -sub GetReadableProperties { - my $properties = shift; - - my @result = (); - - foreach my $property (@{$properties}) { - if (!SkipAttribute($property)) { - push(@result, $property); - } - } - - return @result; -} - -sub GetWriteableProperties { - my $properties = shift; - my @result = (); - - foreach my $property (@{$properties}) { - my $writeable = $property->type !~ /^readonly/; - my $gtype = GetGValueTypeName($property->signature->type); - my $hasGtypeSignature = ($gtype eq "boolean" || $gtype eq "float" || $gtype eq "double" || - $gtype eq "uint64" || $gtype eq "ulong" || $gtype eq "long" || - $gtype eq "uint" || $gtype eq "ushort" || $gtype eq "uchar" || - $gtype eq "char" || $gtype eq "string"); - if ($writeable && $hasGtypeSignature) { - push(@result, $property); - } - } - - return @result; -} - -sub GenerateConditionalString -{ - my $node = shift; - my $conditional = $node->extendedAttributes->{"Conditional"}; - if ($conditional) { - if ($conditional =~ /&/) { - return "ENABLE(" . join(") && ENABLE(", split(/&/, $conditional)) . ")"; - } elsif ($conditional =~ /\|/) { - return "ENABLE(" . join(") || ENABLE(", split(/\|/, $conditional)) . ")"; - } else { - return "ENABLE(" . $conditional . ")"; - } - } else { - return ""; - } -} - -sub GenerateProperty { - my $attribute = shift; - my $interfaceName = shift; - my @writeableProperties = @{shift @_}; - - my $conditionalString = GenerateConditionalString($attribute->signature); - my $camelPropName = $attribute->signature->name; - my $setPropNameFunction = $codeGenerator->WK_ucfirst($camelPropName); - my $getPropNameFunction = $codeGenerator->WK_lcfirst($camelPropName); - - my $propName = decamelize($camelPropName); - my $propNameCaps = uc($propName); - $propName =~ s/_/-/g; - my ${propEnum} = "PROP_${propNameCaps}"; - push(@cBodyPriv, "#if ${conditionalString}\n") if $conditionalString; - push(@cBodyPriv, " ${propEnum},\n"); - push(@cBodyPriv, "#endif /* ${conditionalString} */\n") if $conditionalString; - - my $propType = $attribute->signature->type; - my ${propGType} = decamelize($propType); - my ${ucPropGType} = uc($propGType); - - my $gtype = GetGValueTypeName($propType); - my $gparamflag = "WEBKIT_PARAM_READABLE"; - my $writeable = $attribute->type !~ /^readonly/; - my $const = "read-only "; - my $custom = $attribute->signature->extendedAttributes->{"Custom"}; - if ($writeable && $custom) { - $const = "read-only (due to custom functions needed in webkitdom)"; - return; - } - if ($writeable && !$custom) { - $gparamflag = "WEBKIT_PARAM_READWRITE"; - $const = "read-write "; - } - - my $type = GetGlibTypeName($propType); - $nick = decamelize("${interfaceName}_${propName}"); - $long = "${const} ${type} ${interfaceName}.${propName}"; - - my $convertFunction = ""; - if ($gtype eq "string") { - $convertFunction = "WTF::String::fromUTF8"; - } - - my $getterExpressionPrefix = $codeGenerator->GetterExpressionPrefix(\%implIncludes, $interfaceName, $attribute); - my $setterExpressionPrefix = $codeGenerator->SetterExpressionPrefix(\%implIncludes, $interfaceName, $attribute); - - my $getterContentHead = "coreSelf->$getterExpressionPrefix"; - my $setterContentHead = "coreSelf->$setterExpressionPrefix${convertFunction}(g_value_get_$gtype(value))"; - - if (grep {$_ eq $attribute} @writeableProperties) { - push(@txtSetProps, "#if ${conditionalString}\n") if $conditionalString; - push(@txtSetProps, " case ${propEnum}:\n {\n"); - push(@txtSetProps, " WebCore::ExceptionCode ec = 0;\n") if @{$attribute->setterExceptions}; - push(@txtSetProps, " ${setterContentHead}"); - push(@txtSetProps, ", ec") if @{$attribute->setterExceptions}; - push(@txtSetProps, ");\n"); - push(@txtSetProps, " break;\n }\n"); - push(@txtSetProps, "#endif /* ${conditionalString} */\n") if $conditionalString; - } - - push(@txtGetProps, "#if ${conditionalString}\n") if $conditionalString; - push(@txtGetProps, " case ${propEnum}:\n {\n"); - - my $exception = ""; - if (@{$attribute->getterExceptions}) { - $exception = "ec"; - push(@txtGetProps, " WebCore::ExceptionCode ec = 0;\n"); - } - - my $postConvertFunction = ""; - my $done = 0; - if ($gtype eq "string") { - push(@txtGetProps, " g_value_take_string(value, convertToUTF8String(${getterContentHead}${exception})));\n"); - $done = 1; - } elsif ($gtype eq "object") { - $txtGetProp = << "EOF"; - RefPtr<WebCore::${propType}> ptr = coreSelf->${getPropNameFunction}(${exception}); - g_value_set_object(value, WebKit::kit(ptr.get())); -EOF - push(@txtGetProps, $txtGetProp); - $done = 1; - } - - # FIXME: get rid of this glitch? - my $_gtype = $gtype; - if ($gtype eq "ushort") { - $_gtype = "uint"; - } - - if (!$done) { - push(@txtGetProps, " g_value_set_$_gtype(value, ${convertFunction}coreSelf->${getterExpressionPrefix}${exception})${postConvertFunction});\n"); - } - - push(@txtGetProps, " break;\n }\n"); - push(@txtGetProps, "#endif /* ${conditionalString} */\n") if $conditionalString; - - my %param_spec_options = ("int", "G_MININT, /* min */\nG_MAXINT, /* max */\n0, /* default */", - "boolean", "FALSE, /* default */", - "float", "-G_MAXFLOAT, /* min */\nG_MAXFLOAT, /* max */\n0.0, /* default */", - "double", "-G_MAXDOUBLE, /* min */\nG_MAXDOUBLE, /* max */\n0.0, /* default */", - "uint64", "0, /* min */\nG_MAXUINT64, /* min */\n0, /* default */", - "long", "G_MINLONG, /* min */\nG_MAXLONG, /* max */\n0, /* default */", - "int64", "G_MININT64, /* min */\nG_MAXINT64, /* max */\n0, /* default */", - "ulong", "0, /* min */\nG_MAXULONG, /* max */\n0, /* default */", - "uint", "0, /* min */\nG_MAXUINT, /* max */\n0, /* default */", - "ushort", "0, /* min */\nG_MAXUINT16, /* max */\n0, /* default */", - "uchar", "G_MININT8, /* min */\nG_MAXINT8, /* max */\n0, /* default */", - "char", "0, /* min */\nG_MAXUINT8, /* max */\n0, /* default */", - "string", "\"\", /* default */", - "object", "WEBKIT_TYPE_DOM_${ucPropGType}, /* gobject type */"); - - my $txtInstallProp = << "EOF"; - g_object_class_install_property(gobjectClass, - ${propEnum}, - g_param_spec_${_gtype}("${propName}", /* name */ - "$nick", /* short description */ - "$long", /* longer - could do with some extra doc stuff here */ - $param_spec_options{$gtype} - ${gparamflag})); -EOF - push(@txtInstallProps, "#if ${conditionalString}\n") if $conditionalString; - push(@txtInstallProps, $txtInstallProp); - push(@txtInstallProps, "#endif /* ${conditionalString} */\n") if $conditionalString; -} - -my %breakWords = ("before" => 1, "can" => 1, "context" => 1, "dbl" => 1, "drag" => 1, - "drag" => 1, "duration" => 1, "has" => 1, "key" => 1, "loaded" => 1, - "mouse" => 1, "page" => 1, "pop" => 1, "rate" => 1, "select" => 1, - "time" => 1, "touch" => 1, "volume" => 1); - -sub SplitEventListenerAttrName { - my $attrName = shift; - - my @matches = grep { $attrName =~ /^$_/ } keys (%breakWords); - - if (@matches && (length $matches[0] < length $attrName)) { - $attrName = $matches[0] . "-" . substr($attrName, length $matches[0]); - } - - return $attrName; -} - -sub EventSignalName { - my $attrName = shift; - my $name = SplitEventListenerAttrName($attrName) . "-event"; - - return $name; -} - -sub GenerateEventListener { - my $name = shift; - my $object = shift; - my $interfaceName = shift; - - my $gobjectSignalName = EventSignalName($name); - - my $txtInstallSignal = << "EOF"; - g_signal_new("${gobjectSignalName}", - G_TYPE_FROM_CLASS(gobjectClass), - G_SIGNAL_RUN_LAST, - 0, - g_signal_accumulator_true_handled, 0, - webkit_marshal_BOOLEAN__OBJECT, - G_TYPE_BOOLEAN, 1, - WEBKIT_TYPE_DOM_EVENT | G_SIGNAL_TYPE_STATIC_SCOPE); - -EOF - push(@txtInstallSignals, $txtInstallSignal); - - my ${listenerName} = $name . "Listener"; - - my $txtInstallEventListener = << "EOF"; - WebCore::GObjectEventListener::addEventListener(object, coreObject, "${name}", "${gobjectSignalName}"); -EOF - push(@txtInstallEventListeners, $txtInstallEventListener); - - $implIncludes{"webkit/WebKitDOMEvent.h"} = 1; - $implIncludes{"GObjectEventListener.h"} = 1; -} - -my @eventSignalNames = ( - # User Interface Event types - "focus", "blur", - # Basic Event types - "load", "unload", "abort", "error", "select", "change", "submit", "reset", - "resize", "scroll", - # Mouse Event types - "click", "dblclick", "mousedown", "mouseup", - "mousemove", "mouseover", "mouseout", - # Mouse Wheel Event types - "mousewheel", - # Keyboard Event types - "keydown", "keypress", "keyup", - # -- Events not in the spec but defined in WebKit - # Media Event types, - "loadstart", "progress", "suspend", "emptied", "stalled", "play", - "loadedmetadata", "loadeddata", "waiting", "playing", "canplay", - "canplaythrough", "seeking", "seeked", "timeupdate", "ended", - "ratechange", "durationchange", "volumechange", - # Drag and Drop Event types - "drag", "dragend", "dragenter", "dragleave", "dragover", "dragstart", "drop", - # Cut and Paste Event types - "beforecut", "cut", "beforecopy", "copy", "beforepaste", "paste", - # Animations - "webkitanimationend", "webkitanimationstart", "webkitanimationiteration", - # Other - "contextmenu", "input", "invalid", "search", "selectstart"); - -sub GenerateProperties { - my ($object, $interfaceName, $dataNode) = @_; - - my $clsCaps = substr(ClassNameToGObjectType($className), 12); - my $lowerCaseIfaceName = "webkit_dom_" . (FixUpDecamelizedName(decamelize($interfaceName))); - - # Properties - my $implContent = ""; - - # Properties - $implContent = << "EOF"; -enum { - PROP_0, -EOF - push(@cBodyPriv, $implContent); - - my @readableProperties = GetReadableProperties($dataNode->attributes); - - my $privFunction = GetCoreObject($interfaceName, "coreSelf", "self"); - - my $txtGetProp = << "EOF"; -static void ${lowerCaseIfaceName}_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec) -{ - WebCore::JSMainThreadNullState state; -EOF - push(@txtGetProps, $txtGetProp); - if (scalar @readableProperties > 0) { - $txtGetProp = << "EOF"; - ${className}* self = WEBKIT_DOM_${clsCaps}(object); - $privFunction -EOF - push(@txtGetProps, $txtGetProp); - } - - $txtGetProp = << "EOF"; - switch (prop_id) { -EOF - push(@txtGetProps, $txtGetProp); - - my @writeableProperties = GetWriteableProperties(\@readableProperties); - - my $txtSetProps = << "EOF"; -static void ${lowerCaseIfaceName}_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec) -{ - WebCore::JSMainThreadNullState state; -EOF - push(@txtSetProps, $txtSetProps); - - if (scalar @writeableProperties > 0) { - $txtSetProps = << "EOF"; - ${className}* self = WEBKIT_DOM_${clsCaps}(object); - $privFunction -EOF - push(@txtSetProps, $txtSetProps); - } - - $txtSetProps = << "EOF"; - switch (prop_id) { -EOF - push(@txtSetProps, $txtSetProps); - - foreach my $attribute (@readableProperties) { - if ($attribute->signature->type ne "EventListener" && - $attribute->signature->type ne "MediaQueryListListener") { - GenerateProperty($attribute, $interfaceName, \@writeableProperties); - } - } - - # We need to define all the events there are in all base classes - # that implement EventTarget. For now we only care about these - # two. - if ($interfaceName eq "Node" || $interfaceName eq "DOMWindow") { - foreach my $signalName (@eventSignalNames) { - GenerateEventListener($signalName, $object, $interfaceName); - } - } - - push(@cBodyPriv, "};\n\n"); - - $txtGetProp = << "EOF"; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; - } -} -EOF - push(@txtGetProps, $txtGetProp); - - $txtSetProps = << "EOF"; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; - } -} -EOF - push(@txtSetProps, $txtSetProps); - - # Do not insert extra spaces when interpolating array variables - $" = ""; - - $implContent = << "EOF"; - -static void ${lowerCaseIfaceName}_finalize(GObject* object) -{ - WebKitDOMObject* dom_object = WEBKIT_DOM_OBJECT(object); - - if (dom_object->coreObject) { - WebCore::${interfaceName}* coreObject = static_cast<WebCore::${interfaceName} *>(dom_object->coreObject); - - WebKit::DOMObjectCache::forget(coreObject); - coreObject->deref(); - - dom_object->coreObject = NULL; - } - - G_OBJECT_CLASS(${lowerCaseIfaceName}_parent_class)->finalize(object); -} - -@txtSetProps - -@txtGetProps - -static void ${lowerCaseIfaceName}_constructed(GObject* object) -{ -EOF - push(@cBodyPriv, $implContent); - - if (scalar @txtInstallEventListeners > 0) { - $implContent = << "EOF"; - WebCore::${interfaceName}* coreObject = static_cast<WebCore::${interfaceName}*>(WEBKIT_DOM_OBJECT(object)->coreObject); -EOF - push(@cBodyPriv, $implContent); - } - - $implContent = << "EOF"; -@txtInstallEventListeners - if (G_OBJECT_CLASS(${lowerCaseIfaceName}_parent_class)->constructed) - G_OBJECT_CLASS(${lowerCaseIfaceName}_parent_class)->constructed(object); -} - -static void ${lowerCaseIfaceName}_class_init(${className}Class* requestClass) -{ - GObjectClass *gobjectClass = G_OBJECT_CLASS(requestClass); - gobjectClass->finalize = ${lowerCaseIfaceName}_finalize; - gobjectClass->set_property = ${lowerCaseIfaceName}_set_property; - gobjectClass->get_property = ${lowerCaseIfaceName}_get_property; - gobjectClass->constructed = ${lowerCaseIfaceName}_constructed; - -@txtInstallProps -@txtInstallSignals -} - -static void ${lowerCaseIfaceName}_init(${className}* request) -{ -} - -EOF - push(@cBodyPriv, $implContent); -} - -sub GenerateHeader { - my ($object, $interfaceName, $parentClassName) = @_; - - my $implContent = ""; - - # Add the default header template - @hPrefix = split("\r", $licenceTemplate); - push(@hPrefix, "\n"); - - #Header guard - my $guard = $className . "_h"; - - @hPrefixGuard = << "EOF"; -#ifndef $guard -#define $guard - -EOF - - $implContent = << "EOF"; -G_BEGIN_DECLS -EOF - - push(@hBodyPre, $implContent); - - my $decamelize = FixUpDecamelizedName(decamelize($interfaceName)); - my $clsCaps = uc($decamelize); - my $lowerCaseIfaceName = "webkit_dom_" . ($decamelize); - - $implContent = << "EOF"; -#define WEBKIT_TYPE_DOM_${clsCaps} (${lowerCaseIfaceName}_get_type()) -#define WEBKIT_DOM_${clsCaps}(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_DOM_${clsCaps}, ${className})) -#define WEBKIT_DOM_${clsCaps}_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_DOM_${clsCaps}, ${className}Class) -#define WEBKIT_DOM_IS_${clsCaps}(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_DOM_${clsCaps})) -#define WEBKIT_DOM_IS_${clsCaps}_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_DOM_${clsCaps})) -#define WEBKIT_DOM_${clsCaps}_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_DOM_${clsCaps}, ${className}Class)) - -struct _${className} { - ${parentClassName} parent_instance; -}; - -struct _${className}Class { - ${parentClassName}Class parent_class; -}; - -WEBKIT_API GType -${lowerCaseIfaceName}_get_type (void); - -EOF - - push(@hBody, $implContent); -} - -sub getIncludeHeader { - my $type = shift; - my $name = GetClassName($type); - - return "" if $type eq "int"; - return "" if $type eq "long"; - return "" if $type eq "long long"; - return "" if $type eq "short"; - return "" if $type eq "char"; - return "" if $type eq "float"; - return "" if $type eq "double"; - return "" if $type eq "unsigned"; - return "" if $type eq "unsigned int"; - return "" if $type eq "unsigned long"; - return "" if $type eq "unsigned long long"; - return "" if $type eq "unsigned short"; - return "" if $type eq "DOMTimeStamp"; - return "" if $type eq "EventListener"; - return "" if $type eq "MediaQueryListListener"; - return "" if $type eq "unsigned char"; - return "" if $type eq "DOMString"; - return "" if $type eq "float"; - return "" if $type eq "boolean"; - return "" if $type eq "void"; - return "" if $type eq "CompareHow"; - - return "$name.h"; -} - -sub addIncludeInBody { - my $type = shift; - - if ($type eq "DOMObject") { - return; - } - - my $header = getIncludeHeader($type); - if ($header eq "") { - return; - } - - if (IsGDOMClassType($type)) { - $implIncludes{"webkit/$header"} = 1; - } else { - $implIncludes{$header} = 1 - } -} - -sub GenerateFunction { - my ($object, $interfaceName, $function, $prefix) = @_; - - my $decamelize = FixUpDecamelizedName(decamelize($interfaceName)); - - if ($object eq "MediaQueryListListener") { - return; - } - - if (SkipFunction($function, $decamelize, $prefix)) { - return; - } - - my $functionSigName = $function->signature->name; - my $functionSigType = $prefix eq "set_" ? "void" : $function->signature->type; - my $functionName = "webkit_dom_" . $decamelize . "_" . $prefix . decamelize($functionSigName); - my $returnType = GetGlibTypeName($functionSigType); - my $returnValueIsGDOMType = IsGDOMClassType($functionSigType); - my $conditionalString = GenerateConditionalString($function->signature); - - my $functionSig = "${className}* self"; - - my $callImplParams = ""; - - # skip some custom functions for now - my $isCustomFunction = $function->signature->extendedAttributes->{"Custom"} || - $function->signature->extendedAttributes->{"CustomArgumentHandling"}; - - foreach my $param (@{$function->parameters}) { - my $paramIDLType = $param->type; - if ($paramIDLType eq "EventListener" || $paramIDLType eq "MediaQueryListListener") { - push(@hBody, "\n/* TODO: event function ${functionName} */\n\n"); - push(@cBody, "\n/* TODO: event function ${functionName} */\n\n"); - return; - } - addIncludeInBody($paramIDLType); - my $paramType = GetGlibTypeName($paramIDLType); - my $const = $paramType eq "gchar*" ? "const " : ""; - my $paramName = decamelize($param->name); - - $functionSig .= ", ${const}$paramType $paramName"; - - my $paramIsGDOMType = IsGDOMClassType($paramIDLType); - if ($paramIsGDOMType) { - if ($paramIDLType ne "DOMObject") { - $implIncludes{"webkit/WebKitDOM${paramIDLType}Private.h"} = 1; - } - } - if ($paramIsGDOMType || ($paramIDLType eq "DOMString") || ($paramIDLType eq "CompareHow")) { - $paramName = "converted_" . $paramName; - } - if ($callImplParams) { - $callImplParams .= ", $paramName"; - } else { - $callImplParams = "$paramName"; - } - } - - # Not quite sure what to do with this yet, but we need to take into - # account the difference in parameters between the IDL file and the - # actual implementation. - if ($function->signature->extendedAttributes->{"NeedsUserGestureCheck"}) { - $functionSig .= ", gboolean isUserGesture"; - $callImplParams .= ", " if $callImplParams; - $callImplParams .= "false"; - } - - if ($returnType ne "void" && $returnValueIsGDOMType && $functionSigType ne "DOMObject") { - if ($functionSigType ne "EventTarget") { - $implIncludes{"webkit/WebKitDOM${functionSigType}Private.h"} = 1; - $implIncludes{"webkit/WebKitDOM${functionSigType}.h"} = 1; - } else { - $implIncludes{"WebKitDOM${functionSigType}.h"} = 1; - } - - $implIncludes{"${functionSigType}.h"} = 1; - } - - if(@{$function->raisesExceptions}) { - $functionSig .= ", GError **error"; - } - - push(@hBody, "WEBKIT_API $returnType\n$functionName($functionSig);\n"); - push(@hBody, "\n"); - - push(@cBody, "$returnType\n$functionName($functionSig)\n{\n"); - push(@cBody, "#if ${conditionalString}\n") if $conditionalString; - - if ($returnType ne "void") { - # TODO: return proper default result - push(@cBody, " g_return_val_if_fail(self, 0);\n"); - } else { - push(@cBody, " g_return_if_fail(self);\n"); - } - - push(@cBody, " WebCore::JSMainThreadNullState state;\n"); - - # The WebKit::core implementations check for NULL already; no need to - # duplicate effort. - push(@cBody, " WebCore::${interfaceName} * item = WebKit::core(self);\n"); - - foreach my $param (@{$function->parameters}) { - my $paramName = decamelize($param->name); - my $paramIDLType = $param->type; - my $paramTypeIsPrimitive = $codeGenerator->IsPrimitiveType($paramIDLType); - my $paramIsGDOMType = IsGDOMClassType($paramIDLType); - if (!$paramTypeIsPrimitive) { - if ($returnType ne "void") { - # TODO: return proper default result - # FIXME: Temporary hack for generating a proper implementation - # of the webkit_dom_document_evaluate function (Bug-ID: 42115) - if (!(($functionName eq "webkit_dom_document_evaluate") && ($paramIDLType eq "XPathResult"))) { - push(@cBody, " g_return_val_if_fail($paramName, 0);\n"); - } - } else { - push(@cBody, " g_return_if_fail($paramName);\n"); - } - } - } - - $returnParamName = ""; - foreach my $param (@{$function->parameters}) { - my $paramIDLType = $param->type; - my $paramName = decamelize($param->name); - - my $paramIsGDOMType = IsGDOMClassType($paramIDLType); - if ($paramIDLType eq "DOMString") { - push(@cBody, " WTF::String converted_${paramName} = WTF::String::fromUTF8($paramName);\n"); - } elsif ($paramIDLType eq "CompareHow") { - push(@cBody, " WebCore::Range::CompareHow converted_${paramName} = static_cast<WebCore::Range::CompareHow>($paramName);\n"); - } elsif ($paramIsGDOMType) { - push(@cBody, " WebCore::${paramIDLType} * converted_${paramName} = NULL;\n"); - push(@cBody, " if (${paramName} != NULL) {\n"); - push(@cBody, " converted_${paramName} = WebKit::core($paramName);\n"); - - if ($returnType ne "void") { - # TODO: return proper default result - push(@cBody, " g_return_val_if_fail(converted_${paramName}, 0);\n"); - } else { - push(@cBody, " g_return_if_fail(converted_${paramName});\n"); - } - - push(@cBody, " }\n"); - } - $returnParamName = "converted_".$paramName if $param->extendedAttributes->{"Return"}; - } - - my $assign = ""; - my $assignPre = ""; - my $assignPost = ""; - - # We need to special-case these Node methods because their C++ - # signature is different from what we'd expect given their IDL - # description; see Node.h. - my $functionHasCustomReturn = $functionName eq "webkit_dom_node_append_child" || - $functionName eq "webkit_dom_node_insert_before" || - $functionName eq "webkit_dom_node_replace_child" || - $functionName eq "webkit_dom_node_remove_child"; - - if ($returnType ne "void" && !$functionHasCustomReturn) { - if ($returnValueIsGDOMType) { - $assign = "PassRefPtr<WebCore::${functionSigType}> g_res = "; - $assignPre = "WTF::getPtr("; - $assignPost = ")"; - } else { - $assign = "${returnType} res = "; - } - } - my $exceptions = ""; - if (@{$function->raisesExceptions}) { - push(@cBody, " WebCore::ExceptionCode ec = 0;\n"); - if (${callImplParams} ne "") { - $exceptions = ", ec"; - } else { - $exceptions = "ec"; - } - } - - if ($functionHasCustomReturn) { - my $customNodeAppendChild = << "EOF"; - bool ok = item->${functionSigName}(${callImplParams}${exceptions}); - if (ok) - { - ${returnType} res = WebKit::kit($returnParamName); - return res; - } -EOF - push(@cBody, $customNodeAppendChild); - - if(@{$function->raisesExceptions}) { - my $exceptionHandling = << "EOF"; - - WebCore::ExceptionCodeDescription ecdesc; - WebCore::getExceptionCodeDescription(ec, ecdesc); - g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), ecdesc.code, ecdesc.name); -EOF - push(@cBody, $exceptionHandling); - } - push(@cBody, "return NULL;"); - push(@cBody, "}\n\n"); - return; - } elsif ($functionSigType eq "DOMString") { - my $getterContentHead; - if ($prefix) { - my $getterExpressionPrefix = $codeGenerator->GetterExpressionPrefix(\%implIncludes, $interfaceName, $function); - $getterContentHead = "${assign}convertToUTF8String(item->$getterExpressionPrefix${exceptions}));\n"; - } else { - $getterContentHead = "${assign}convertToUTF8String(item->${functionSigName}(${callImplParams}${exceptions}));\n"; - } - push(@cBody, " ${getterContentHead}"); - } else { - my $contentHead; - if ($prefix eq "get_") { - my $getterExpressionPrefix = $codeGenerator->GetterExpressionPrefix(\%implIncludes, $interfaceName, $function); - $contentHead = "${assign}${assignPre}item->$getterExpressionPrefix${callImplParams}${exceptions}${assignPost});\n"; - } elsif ($prefix eq "set_") { - my $setterExpressionPrefix = $codeGenerator->SetterExpressionPrefix(\%implIncludes, $interfaceName, $function); - $contentHead = "${assign}${assignPre}item->$setterExpressionPrefix${callImplParams}${exceptions}${assignPost});\n"; - } else { - $contentHead = "${assign}${assignPre}item->${functionSigName}(${callImplParams}${exceptions}${assignPost});\n"; - } - push(@cBody, " ${contentHead}"); - - if(@{$function->raisesExceptions}) { - my $exceptionHandling = << "EOF"; - if (ec) { - WebCore::ExceptionCodeDescription ecdesc; - WebCore::getExceptionCodeDescription(ec, ecdesc); - g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), ecdesc.code, ecdesc.name); - } -EOF - push(@cBody, $exceptionHandling); - } - } - - if ($returnType ne "void" && !$functionHasCustomReturn) { - if ($functionSigType ne "DOMObject") { - if ($returnValueIsGDOMType) { - push(@cBody, " ${returnType} res = WebKit::kit(g_res.get());\n"); - } - } - if ($functionSigType eq "DOMObject") { - push(@cBody, " return NULL; /* TODO: return canvas object */\n"); - } else { - push(@cBody, " return res;\n"); - } - } - - if ($conditionalString) { - if ($returnType ne "void") { - push(@cBody, "#else\n"); - if ($codeGenerator->IsNonPointerType($functionSigType)) { - push(@cBody, " return static_cast<${returnType}>(0);\n"); - } else { - push(@cBody, " return NULL;\n"); - } - } - push(@cBody, "#endif /* ${conditionalString} */\n") if $conditionalString; - } - - push(@cBody, "}\n\n"); -} - -sub ClassHasFunction { - my ($class, $name) = @_; - - foreach my $function (@{$class->functions}) { - if ($function->signature->name eq $name) { - return 1; - } - } - - return 0; -} - -sub GenerateFunctions { - my ($object, $interfaceName, $dataNode) = @_; - - foreach my $function (@{$dataNode->functions}) { - $object->GenerateFunction($interfaceName, $function, ""); - } - - TOP: - foreach my $attribute (@{$dataNode->attributes}) { - if (SkipAttribute($attribute) || - $attribute->signature->type eq "EventListener" || - $attribute->signature->type eq "MediaQueryListListener") { - next TOP; - } - - if ($attribute->signature->name eq "type" - # This will conflict with the get_type() function we define to return a GType - # according to GObject conventions. Skip this for now. - || $attribute->signature->name eq "URL" # TODO: handle this - ) { - next TOP; - } - - my $attrNameUpper = $codeGenerator->WK_ucfirst($attribute->signature->name); - my $getname = "get${attrNameUpper}"; - my $setname = "set${attrNameUpper}"; - if (ClassHasFunction($dataNode, $getname) || ClassHasFunction($dataNode, $setname)) { - # Very occasionally an IDL file defines getter/setter functions for one of its - # attributes; in this case we don't need to autogenerate the getter/setter. - next TOP; - } - - # Generate an attribute getter. For an attribute "foo", this is a function named - # "get_foo" which calls a DOM class method named foo(). - my $function = new domFunction(); - $function->signature($attribute->signature); - $function->raisesExceptions($attribute->getterExceptions); - $object->GenerateFunction($interfaceName, $function, "get_"); - - if ($attribute->type =~ /^readonly/) { - next TOP; - } - - # Generate an attribute setter. For an attribute, "foo", this is a function named - # "set_foo" which calls a DOM class method named setFoo(). - $function = new domFunction(); - - $function->signature(new domSignature()); - $function->signature->name($attribute->signature->name); - $function->signature->type($attribute->signature->type); - $function->signature->extendedAttributes($attribute->signature->extendedAttributes); - - my $param = new domSignature(); - $param->name("value"); - $param->type($attribute->signature->type); - my %attributes = (); - $param->extendedAttributes(attributes); - my $arrayRef = $function->parameters; - push(@$arrayRef, $param); - - $function->raisesExceptions($attribute->setterExceptions); - - $object->GenerateFunction($interfaceName, $function, "set_"); - } -} - -sub GenerateCFile { - my ($object, $interfaceName, $parentClassName, $parentGObjType, $dataNode) = @_; - - if ($dataNode->extendedAttributes->{"EventTarget"}) { - $object->GenerateEventTargetIface($dataNode); - } - - my $implContent = ""; - - my $clsCaps = uc(FixUpDecamelizedName(decamelize($interfaceName))); - my $lowerCaseIfaceName = "webkit_dom_" . FixUpDecamelizedName(decamelize($interfaceName)); - - $implContent = << "EOF"; -${defineTypeMacro}(${className}, ${lowerCaseIfaceName}, ${parentGObjType}${defineTypeInterfaceImplementation} - -namespace WebKit { - -WebCore::${interfaceName}* core(${className}* request) -{ - g_return_val_if_fail(request, 0); - - WebCore::${interfaceName}* coreObject = static_cast<WebCore::${interfaceName}*>(WEBKIT_DOM_OBJECT(request)->coreObject); - g_return_val_if_fail(coreObject, 0); - - return coreObject; -} - -} // namespace WebKit -EOF - - push(@cBodyPriv, $implContent); - $object->GenerateProperties($interfaceName, $dataNode); - $object->GenerateFunctions($interfaceName, $dataNode); - - my $wrapMethod = << "EOF"; -namespace WebKit { -${className}* wrap${interfaceName}(WebCore::${interfaceName}* coreObject) -{ - g_return_val_if_fail(coreObject, 0); - - /* We call ref() rather than using a C++ smart pointer because we can't store a C++ object - * in a C-allocated GObject structure. See the finalize() code for the - * matching deref(). - */ - coreObject->ref(); - - return WEBKIT_DOM_${clsCaps}(g_object_new(WEBKIT_TYPE_DOM_${clsCaps}, - "core-object", coreObject, NULL)); -} -} // namespace WebKit -EOF - push(@cBodyPriv, $wrapMethod); -} - -sub GenerateEndHeader { - my ($object) = @_; - - #Header guard - my $guard = $className . "_h"; - - push(@hBody, "G_END_DECLS\n\n"); - push(@hPrefixGuardEnd, "#endif /* $guard */\n"); -} - -sub GeneratePrivateHeader { - my $object = shift; - my $dataNode = shift; - - my $interfaceName = $dataNode->name; - my $filename = "$outputDir/" . $className . "Private.h"; - my $guard = uc(decamelize($className)) . "_PRIVATE_H"; - my $parentClassName = GetParentClassName($dataNode); - my $hasLegacyParent = $dataNode->extendedAttributes->{"LegacyParent"}; - my $hasRealParent = @{$dataNode->parents} > 0; - my $hasParent = $hasLegacyParent || $hasRealParent; - - open(PRIVHEADER, ">$filename") or die "Couldn't open file $filename for writing"; - - print PRIVHEADER split("\r", $licenceTemplate); - print PRIVHEADER "\n"; - - my $text = << "EOF"; -#ifndef $guard -#define $guard - -#include <glib-object.h> -#include <webkit/${parentClassName}.h> -#include "${interfaceName}.h" -EOF - - print PRIVHEADER $text; - - print PRIVHEADER map { "#include \"$_\"\n" } sort keys(%hdrPropIncludes); - print PRIVHEADER "\n" if keys(%hdrPropIncludes); - - $text = << "EOF"; -namespace WebKit { - ${className} * - wrap${interfaceName}(WebCore::${interfaceName} *coreObject); - - WebCore::${interfaceName} * - core(${className} *request); - -EOF - - print PRIVHEADER $text; - - if ($className ne "WebKitDOMNode") { - $text = << "EOF"; - ${className}* - kit(WebCore::${interfaceName}* node); - -EOF - print PRIVHEADER $text; - } - - $text = << "EOF"; -} // namespace WebKit - -#endif /* ${guard} */ -EOF - print PRIVHEADER $text; - - close(PRIVHEADER); -} - -sub UsesManualKitImplementation { - my $type = shift; - - return 1 if $type eq "Node" or $type eq "Element" or $type eq "Event"; - return 0; -} - -sub GenerateEventTargetIface { - my $object = shift; - my $dataNode = shift; - - my $interfaceName = $dataNode->name; - my $decamelize = FixUpDecamelizedName(decamelize($interfaceName)); - - $implIncludes{"WebKitDOMEventTarget.h"} = 1; - $implIncludes{"WebKitDOMEventPrivate.h"} = 1; - - my $impl = << "EOF"; -static void webkit_dom_${decamelize}_dispatch_event(WebKitDOMEventTarget* target, WebKitDOMEvent* event, GError** error) -{ - WebCore::Event* coreEvent = WebKit::core(event); - WebCore::${interfaceName}* coreTarget = static_cast<WebCore::${interfaceName}*>(WEBKIT_DOM_OBJECT(target)->coreObject); - - WebCore::ExceptionCode ec = 0; - coreTarget->dispatchEvent(coreEvent, ec); - if (ec) { - WebCore::ExceptionCodeDescription description; - WebCore::getExceptionCodeDescription(ec, description); - g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), description.code, description.name); - } -} - -static void webkit_dom_event_target_init(WebKitDOMEventTargetIface* iface) -{ - iface->dispatch_event = webkit_dom_${decamelize}_dispatch_event; -} - -EOF - - push(@cBody, $impl); - - $defineTypeMacro = "G_DEFINE_TYPE_WITH_CODE"; - $defineTypeInterfaceImplementation = ", G_IMPLEMENT_INTERFACE(WEBKIT_TYPE_DOM_EVENT_TARGET, webkit_dom_event_target_init))"; -} - -sub Generate { - my ($object, $dataNode) = @_; - - my $hasLegacyParent = $dataNode->extendedAttributes->{"LegacyParent"}; - my $hasRealParent = @{$dataNode->parents} > 0; - my $hasParent = $hasLegacyParent || $hasRealParent; - my $parentClassName = GetParentClassName($dataNode); - my $parentGObjType = GetParentGObjType($dataNode); - my $interfaceName = $dataNode->name; - - # Add the guard if the 'Conditional' extended attribute exists - my $conditionalString = GenerateConditionalString($dataNode); - push(@conditionGuardStart, "#if ${conditionalString}\n\n") if $conditionalString; - push(@conditionGuardEnd, "#endif /* ${conditionalString} */\n") if $conditionalString; - - # Add the default impl header template - @cPrefix = split("\r", $licenceTemplate); - push(@cPrefix, "\n"); - - $implIncludes{"webkitmarshal.h"} = 1; - $implIncludes{"webkitprivate.h"} = 1; - $implIncludes{"DOMObjectCache.h"} = 1; - $implIncludes{"WebKitDOMBinding.h"} = 1; - $implIncludes{"gobject/ConvertToUTF8String.h"} = 1; - $implIncludes{"webkit/$className.h"} = 1; - $implIncludes{"webkit/${className}Private.h"} = 1; - $implIncludes{"${interfaceName}.h"} = 1; - $implIncludes{"JSMainThreadExecState.h"} = 1; - $implIncludes{"ExceptionCode.h"} = 1; - - $hdrIncludes{"webkit/${parentClassName}.h"} = 1; - - if (!UsesManualKitImplementation($interfaceName)) { - my $converter = << "EOF"; -namespace WebKit { - -${className}* kit(WebCore::$interfaceName* obj) -{ - g_return_val_if_fail(obj, 0); - - if (gpointer ret = DOMObjectCache::get(obj)) - return static_cast<${className}*>(ret); - - return static_cast<${className}*>(DOMObjectCache::put(obj, WebKit::wrap${interfaceName}(obj))); -} - -} // namespace WebKit // - -EOF - push(@cBody, $converter); - } - - $object->GenerateHeader($interfaceName, $parentClassName); - $object->GenerateCFile($interfaceName, $parentClassName, $parentGObjType, $dataNode); - $object->GenerateEndHeader(); - $object->GeneratePrivateHeader($dataNode); - -} - -# Internal helper -sub WriteData { - my ($object, $name) = @_; - - # Write public header. - my $hdrFName = "$outputDir/" . $name . ".h"; - open(HEADER, ">$hdrFName") or die "Couldn't open file $hdrFName"; - - print HEADER @hPrefix; - print HEADER @hPrefixGuard; - print HEADER "#include \"webkit/webkitdomdefines.h\"\n"; - print HEADER "#include <glib-object.h>\n"; - print HEADER "#include <webkit/webkitdefines.h>\n"; - print HEADER map { "#include \"$_\"\n" } sort keys(%hdrIncludes); - print HEADER "\n" if keys(%hdrIncludes); - print HEADER "\n"; - print HEADER @hBodyPre; - print HEADER @hBody; - print HEADER @hPrefixGuardEnd; - - close(HEADER); - - # Write the implementation sources - my $implFileName = "$outputDir/" . $name . ".cpp"; - open(IMPL, ">$implFileName") or die "Couldn't open file $implFileName"; - - print IMPL @cPrefix; - print IMPL "#include <glib-object.h>\n"; - print IMPL "#include \"config.h\"\n\n"; - print IMPL @conditionGuardStart; - print IMPL "#include <wtf/GetPtr.h>\n"; - print IMPL "#include <wtf/RefPtr.h>\n"; - print IMPL map { "#include \"$_\"\n" } sort keys(%implIncludes); - print IMPL "\n" if keys(%implIncludes); - print IMPL @cBody; - - print IMPL "\n"; - print IMPL @cBodyPriv; - print IMPL @conditionGuardEnd; - - close(IMPL); - - %implIncludes = (); - %hdrIncludes = (); - @hPrefix = (); - @hBody = (); - - @cPrefix = (); - @cBody = (); - @cBodyPriv = (); -} - -sub GenerateInterface { - my ($object, $dataNode, $defines) = @_; - my $name = $dataNode->name; - - # Set up some global variables - $className = GetClassName($dataNode->name); - $object->Generate($dataNode); - - # Write changes - my $fname = "WebKitDOM_" . $name; - $fname =~ s/_//g; - $object->WriteData($fname); -} diff --git a/WebCore/bindings/scripts/CodeGeneratorJS.pm b/WebCore/bindings/scripts/CodeGeneratorJS.pm deleted file mode 100644 index 132518f..0000000 --- a/WebCore/bindings/scripts/CodeGeneratorJS.pm +++ /dev/null @@ -1,2944 +0,0 @@ -# -# Copyright (C) 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org> -# Copyright (C) 2006 Anders Carlsson <andersca@mac.com> -# Copyright (C) 2006, 2007 Samuel Weinig <sam@webkit.org> -# Copyright (C) 2006 Alexey Proskuryakov <ap@webkit.org> -# Copyright (C) 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved. -# Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au> -# Copyright (C) Research In Motion Limited 2010. All rights reserved. -# Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public -# License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. -# -# You should have received a copy of the GNU Library General Public License -# along with this library; see the file COPYING.LIB. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02110-1301, USA. - -package CodeGeneratorJS; - -my $module = ""; -my $outputDir = ""; -my $writeDependencies = 0; - -my @headerContentHeader = (); -my @headerContent = (); -my %headerIncludes = (); -my %headerTrailingIncludes = (); - -my @implContentHeader = (); -my @implContent = (); -my %implIncludes = (); -my @depsContent = (); -my $numCachedAttributes = 0; -my $currentCachedAttribute = 0; - -# Default .h template -my $headerTemplate = << "EOF"; -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ -EOF - -# Default constructor -sub new -{ - my $object = shift; - my $reference = { }; - - $codeGenerator = shift; - $outputDir = shift; - shift; # $outputHeadersDir - shift; # $useLayerOnTop - shift; # $preprocessor - $writeDependencies = shift; - - bless($reference, $object); - return $reference; -} - -sub finish -{ - my $object = shift; - - # Commit changes! - $object->WriteData(); -} - -sub leftShift($$) { - my ($value, $distance) = @_; - return (($value << $distance) & 0xFFFFFFFF); -} - -# Params: 'domClass' struct -sub GenerateInterface -{ - my $object = shift; - my $dataNode = shift; - my $defines = shift; - - $codeGenerator->LinkOverloadedFunctions($dataNode); - - # Start actual generation - if ($dataNode->extendedAttributes->{"Callback"}) { - $object->GenerateCallbackHeader($dataNode); - $object->GenerateCallbackImplementation($dataNode); - } else { - $object->GenerateHeader($dataNode); - $object->GenerateImplementation($dataNode); - } - - my $name = $dataNode->name; - - # Open files for writing - my $headerFileName = "$outputDir/JS$name.h"; - my $implFileName = "$outputDir/JS$name.cpp"; - my $depsFileName = "$outputDir/JS$name.dep"; - - # Remove old dependency file. - unlink($depsFileName); - - open($IMPL, ">$implFileName") || die "Couldn't open file $implFileName"; - open($HEADER, ">$headerFileName") || die "Couldn't open file $headerFileName"; - if (@depsContent) { - open($DEPS, ">$depsFileName") || die "Couldn't open file $depsFileName"; - } -} - -sub GenerateAttributeEventListenerCall -{ - my $className = shift; - my $implSetterFunctionName = shift; - my $windowEventListener = shift; - - my $wrapperObject = $windowEventListener ? "globalObject" : "thisObject"; - my @GenerateEventListenerImpl = (); - - if ($className eq "JSSVGElementInstance") { - # SVGElementInstances have to create JSEventListeners with the wrapper equal to the correspondingElement - $wrapperObject = "asObject(correspondingElementWrapper)"; - - push(@GenerateEventListenerImpl, <<END); - JSValue correspondingElementWrapper = toJS(exec, imp->correspondingElement()); - if (correspondingElementWrapper.isObject()) -END - - # Add leading whitespace to format the imp->set... line correctly - push(@GenerateEventListenerImpl, " "); - } - - push(@GenerateEventListenerImpl, " imp->set$implSetterFunctionName(createJSAttributeEventListener(exec, value, $wrapperObject));\n"); - return @GenerateEventListenerImpl; -} - -sub GenerateEventListenerCall -{ - my $className = shift; - my $functionName = shift; - my $passRefPtrHandling = ($functionName eq "add") ? "" : ".get()"; - - $implIncludes{"JSEventListener.h"} = 1; - - my @GenerateEventListenerImpl = (); - my $wrapperObject = "castedThis"; - if ($className eq "JSSVGElementInstance") { - # SVGElementInstances have to create JSEventListeners with the wrapper equal to the correspondingElement - $wrapperObject = "asObject(correspondingElementWrapper)"; - - push(@GenerateEventListenerImpl, <<END); - JSValue correspondingElementWrapper = toJS(exec, imp->correspondingElement()); - if (!correspondingElementWrapper.isObject()) - return JSValue::encode(jsUndefined()); -END - } - - push(@GenerateEventListenerImpl, <<END); - JSValue listener = exec->argument(1); - if (!listener.isObject()) - return JSValue::encode(jsUndefined()); - imp->${functionName}EventListener(ustringToAtomicString(exec->argument(0).toString(exec)), JSEventListener::create(asObject(listener), $wrapperObject, false, currentWorld(exec))$passRefPtrHandling, exec->argument(2).toBoolean(exec)); - return JSValue::encode(jsUndefined()); -END - return @GenerateEventListenerImpl; -} - -# Params: 'idlDocument' struct -sub GenerateModule -{ - my $object = shift; - my $dataNode = shift; - - $module = $dataNode->module; -} - -sub GetParentClassName -{ - my $dataNode = shift; - - return $dataNode->extendedAttributes->{"LegacyParent"} if $dataNode->extendedAttributes->{"LegacyParent"}; - return "DOMObjectWithGlobalPointer" if (@{$dataNode->parents} eq 0); - return "JS" . $codeGenerator->StripModule($dataNode->parents(0)); -} - -sub GetVisibleClassName -{ - my $className = shift; - - return "DOMException" if $className eq "DOMCoreException"; - return "FormData" if $className eq "DOMFormData"; - return "MimeType" if $className eq "DOMMimeType"; - return "MimeTypeArray" if $className eq "DOMMimeTypeArray"; - return "Plugin" if $className eq "DOMPlugin"; - return "PluginArray" if $className eq "DOMPluginArray"; - - return $className; -} - -sub GetCallbackClassName -{ - my $className = shift; - - return "JSCustomVoidCallback" if $className eq "VoidCallback"; - return "JS$className"; -} - -sub IndexGetterReturnsStrings -{ - my $type = shift; - - return 1 if $type eq "CSSStyleDeclaration" or $type eq "MediaList" or $type eq "DOMStringList" or $type eq "DOMTokenList" or $type eq "DOMSettableTokenList"; - return 0; -} - -sub AddIncludesForType -{ - my $type = $codeGenerator->StripModule(shift); - my $isCallback = @_ ? shift : 0; - - # When we're finished with the one-file-per-class - # reorganization, we won't need these special cases. - if ($codeGenerator->IsPrimitiveType($type) or $codeGenerator->AvoidInclusionOfType($type) - or $type eq "DOMString" or $type eq "DOMObject" or $type eq "Array") { - } elsif ($type =~ /SVGPathSeg/) { - $joinedName = $type; - $joinedName =~ s/Abs|Rel//; - $implIncludes{"${joinedName}.h"} = 1; - } elsif ($type eq "XPathNSResolver") { - $implIncludes{"JSXPathNSResolver.h"} = 1; - $implIncludes{"JSCustomXPathNSResolver.h"} = 1; - } elsif ($isCallback) { - $implIncludes{"JS${type}.h"} = 1; - } else { - # default, include the same named file - $implIncludes{"${type}.h"} = 1; - } - - # additional includes (things needed to compile the bindings but not the header) - - if ($type eq "CanvasRenderingContext2D") { - $implIncludes{"CanvasGradient.h"} = 1; - $implIncludes{"CanvasPattern.h"} = 1; - $implIncludes{"CanvasStyle.h"} = 1; - } - - if ($type eq "CanvasGradient" or $type eq "XPathNSResolver" or $type eq "MessagePort") { - $implIncludes{"PlatformString.h"} = 1; - } - - if ($type eq "Document") { - $implIncludes{"NodeFilter.h"} = 1; - } - - if ($type eq "MediaQueryListListener") { - $implIncludes{"MediaQueryListListener.h"} = 1; - } -} - -# FIXME: This method will go away once all SVG animated properties are converted to the new scheme. -sub AddIncludesForSVGAnimatedType -{ - my $type = shift; - $type =~ s/SVGAnimated//; - - if ($type eq "Point" or $type eq "Rect") { - $implIncludes{"Float$type.h"} = 1; - } elsif ($type eq "String") { - $implIncludes{"PlatformString.h"} = 1; - } -} - -sub IsScriptProfileType -{ - my $type = shift; - return 1 if ($type eq "ScriptProfileNode"); - return 0; -} - -sub AddTypedefForScriptProfileType -{ - my $type = shift; - (my $jscType = $type) =~ s/Script//; - - push(@headerContent, "typedef JSC::$jscType $type;\n\n"); -} - -sub AddClassForwardIfNeeded -{ - my $implClassName = shift; - - # SVGAnimatedLength/Number/etc. are typedefs to SVGAnimatedTemplate, so don't use class forwards for them! - unless ($codeGenerator->IsSVGAnimatedType($implClassName) or IsScriptProfileType($implClassName)) { - push(@headerContent, "class $implClassName;\n\n"); - # ScriptProfile and ScriptProfileNode are typedefs to JSC::Profile and JSC::ProfileNode. - } elsif (IsScriptProfileType($implClassName)) { - AddTypedefForScriptProfileType($implClassName); - } -} - -sub HashValueForClassAndName -{ - my $class = shift; - my $name = shift; - - # SVG Filter enums live in WebCore namespace (platform/graphics/) - if ($class =~ /^SVGFE*/ or $class =~ /^SVGComponentTransferFunctionElement$/) { - return "WebCore::$name"; - } - - return "${class}::$name"; -} - -sub hashTableAccessor -{ - my $noStaticTables = shift; - my $className = shift; - if ($noStaticTables) { - return "get${className}Table(exec)"; - } else { - return "&${className}Table"; - } -} - -sub prototypeHashTableAccessor -{ - my $noStaticTables = shift; - my $className = shift; - if ($noStaticTables) { - return "get${className}PrototypeTable(exec)"; - } else { - return "&${className}PrototypeTable"; - } -} - -sub GenerateConditionalStringFromAttributeValue -{ - my $conditional = shift; - if ($conditional =~ /&/) { - return "ENABLE(" . join(") && ENABLE(", split(/&/, $conditional)) . ")"; - } elsif ($conditional =~ /\|/) { - return "ENABLE(" . join(") || ENABLE(", split(/\|/, $conditional)) . ")"; - } else { - return "ENABLE(" . $conditional . ")"; - } -} - -sub GenerateConditionalString -{ - my $node = shift; - my $conditional = $node->extendedAttributes->{"Conditional"}; - if ($conditional) { - return GenerateConditionalStringFromAttributeValue($conditional); - } else { - return ""; - } -} - -sub GenerateGetOwnPropertySlotBody -{ - my ($dataNode, $interfaceName, $className, $implClassName, $hasAttributes, $inlined) = @_; - - my $namespaceMaybe = ($inlined ? "JSC::" : ""); - - my @getOwnPropertySlotImpl = (); - - if ($interfaceName eq "NamedNodeMap" or $interfaceName eq "HTMLCollection" or $interfaceName eq "HTMLAllCollection") { - push(@getOwnPropertySlotImpl, " ${namespaceMaybe}JSValue proto = prototype();\n"); - push(@getOwnPropertySlotImpl, " if (proto.isObject() && static_cast<${namespaceMaybe}JSObject*>(asObject(proto))->hasProperty(exec, propertyName))\n"); - push(@getOwnPropertySlotImpl, " return false;\n\n"); - } - - my $manualLookupGetterGeneration = sub { - my $requiresManualLookup = $dataNode->extendedAttributes->{"HasIndexGetter"} || $dataNode->extendedAttributes->{"HasNameGetter"}; - if ($requiresManualLookup) { - push(@getOwnPropertySlotImpl, " const ${namespaceMaybe}HashEntry* entry = ${className}Table.entry(exec, propertyName);\n"); - push(@getOwnPropertySlotImpl, " if (entry) {\n"); - push(@getOwnPropertySlotImpl, " slot.setCustom(this, entry->propertyGetter());\n"); - push(@getOwnPropertySlotImpl, " return true;\n"); - push(@getOwnPropertySlotImpl, " }\n"); - } - }; - - if (!$dataNode->extendedAttributes->{"HasOverridingNameGetter"}) { - &$manualLookupGetterGeneration(); - } - - if ($dataNode->extendedAttributes->{"HasIndexGetter"} || $dataNode->extendedAttributes->{"HasCustomIndexGetter"} || $dataNode->extendedAttributes->{"HasNumericIndexGetter"}) { - push(@getOwnPropertySlotImpl, " bool ok;\n"); - push(@getOwnPropertySlotImpl, " unsigned index = propertyName.toUInt32(ok);\n"); - - # If the item function returns a string then we let the ConvertNullStringTo handle the cases - # where the index is out of range. - if (IndexGetterReturnsStrings($implClassName)) { - push(@getOwnPropertySlotImpl, " if (ok) {\n"); - } else { - push(@getOwnPropertySlotImpl, " if (ok && index < static_cast<$implClassName*>(impl())->length()) {\n"); - } - if ($dataNode->extendedAttributes->{"HasCustomIndexGetter"} || $dataNode->extendedAttributes->{"HasNumericIndexGetter"}) { - push(@getOwnPropertySlotImpl, " slot.setValue(getByIndex(exec, index));\n"); - } else { - push(@getOwnPropertySlotImpl, " slot.setCustomIndex(this, index, indexGetter);\n"); - } - push(@getOwnPropertySlotImpl, " return true;\n"); - push(@getOwnPropertySlotImpl, " }\n"); - } - - if ($dataNode->extendedAttributes->{"HasNameGetter"} || $dataNode->extendedAttributes->{"HasOverridingNameGetter"}) { - push(@getOwnPropertySlotImpl, " if (canGetItemsForName(exec, static_cast<$implClassName*>(impl()), propertyName)) {\n"); - push(@getOwnPropertySlotImpl, " slot.setCustom(this, nameGetter);\n"); - push(@getOwnPropertySlotImpl, " return true;\n"); - push(@getOwnPropertySlotImpl, " }\n"); - if ($inlined) { - $headerIncludes{"wtf/text/AtomicString.h"} = 1; - } else { - $implIncludes{"wtf/text/AtomicString.h"} = 1; - } - } - - if ($dataNode->extendedAttributes->{"HasOverridingNameGetter"}) { - &$manualLookupGetterGeneration(); - } - - if ($dataNode->extendedAttributes->{"DelegatingGetOwnPropertySlot"}) { - push(@getOwnPropertySlotImpl, " if (getOwnPropertySlotDelegate(exec, propertyName, slot))\n"); - push(@getOwnPropertySlotImpl, " return true;\n"); - } - - if ($hasAttributes) { - if ($inlined) { - die "Cannot inline if NoStaticTables is set." if ($dataNode->extendedAttributes->{"NoStaticTables"}); - push(@getOwnPropertySlotImpl, " return ${namespaceMaybe}getStaticValueSlot<$className, Base>(exec, s_info.staticPropHashTable, this, propertyName, slot);\n"); - } else { - push(@getOwnPropertySlotImpl, " return ${namespaceMaybe}getStaticValueSlot<$className, Base>(exec, " . hashTableAccessor($dataNode->extendedAttributes->{"NoStaticTables"}, $className) . ", this, propertyName, slot);\n"); - } - } else { - push(@getOwnPropertySlotImpl, " return Base::getOwnPropertySlot(exec, propertyName, slot);\n"); - } - - return @getOwnPropertySlotImpl; -} - -sub GenerateGetOwnPropertyDescriptorBody -{ - my ($dataNode, $interfaceName, $className, $implClassName, $hasAttributes, $inlined) = @_; - - my $namespaceMaybe = ($inlined ? "JSC::" : ""); - - my @getOwnPropertyDescriptorImpl = (); - if ($dataNode->extendedAttributes->{"CheckDomainSecurity"}) { - if ($interfaceName eq "DOMWindow") { - push(@implContent, " if (!static_cast<$className*>(thisObject)->allowsAccessFrom(exec))\n"); - } else { - push(@implContent, " if (!allowsAccessFromFrame(exec, static_cast<$className*>(thisObject)->impl()->frame()))\n"); - } - push(@implContent, " return false;\n"); - } - - if ($interfaceName eq "NamedNodeMap" or $interfaceName eq "HTMLCollection" or $interfaceName eq "HTMLAllCollection") { - push(@getOwnPropertyDescriptorImpl, " ${namespaceMaybe}JSValue proto = prototype();\n"); - push(@getOwnPropertyDescriptorImpl, " if (proto.isObject() && static_cast<${namespaceMaybe}JSObject*>(asObject(proto))->hasProperty(exec, propertyName))\n"); - push(@getOwnPropertyDescriptorImpl, " return false;\n\n"); - } - - my $manualLookupGetterGeneration = sub { - my $requiresManualLookup = $dataNode->extendedAttributes->{"HasIndexGetter"} || $dataNode->extendedAttributes->{"HasNameGetter"}; - if ($requiresManualLookup) { - push(@getOwnPropertyDescriptorImpl, " const ${namespaceMaybe}HashEntry* entry = ${className}Table.entry(exec, propertyName);\n"); - push(@getOwnPropertyDescriptorImpl, " if (entry) {\n"); - push(@getOwnPropertyDescriptorImpl, " PropertySlot slot;\n"); - push(@getOwnPropertyDescriptorImpl, " slot.setCustom(this, entry->propertyGetter());\n"); - push(@getOwnPropertyDescriptorImpl, " descriptor.setDescriptor(slot.getValue(exec, propertyName), entry->attributes());\n"); - push(@getOwnPropertyDescriptorImpl, " return true;\n"); - push(@getOwnPropertyDescriptorImpl, " }\n"); - } - }; - - if (!$dataNode->extendedAttributes->{"HasOverridingNameGetter"}) { - &$manualLookupGetterGeneration(); - } - - if ($dataNode->extendedAttributes->{"HasIndexGetter"} || $dataNode->extendedAttributes->{"HasCustomIndexGetter"} || $dataNode->extendedAttributes->{"HasNumericIndexGetter"}) { - push(@getOwnPropertyDescriptorImpl, " bool ok;\n"); - push(@getOwnPropertyDescriptorImpl, " unsigned index = propertyName.toUInt32(ok);\n"); - push(@getOwnPropertyDescriptorImpl, " if (ok && index < static_cast<$implClassName*>(impl())->length()) {\n"); - if ($dataNode->extendedAttributes->{"HasCustomIndexGetter"} || $dataNode->extendedAttributes->{"HasNumericIndexGetter"}) { - # Assume that if there's a setter, the index will be writable - if ($dataNode->extendedAttributes->{"HasIndexSetter"} || $dataNode->extendedAttributes->{"HasCustomIndexSetter"}) { - push(@getOwnPropertyDescriptorImpl, " descriptor.setDescriptor(getByIndex(exec, index), ${namespaceMaybe}DontDelete);\n"); - } else { - push(@getOwnPropertyDescriptorImpl, " descriptor.setDescriptor(getByIndex(exec, index), ${namespaceMaybe}DontDelete | ${namespaceMaybe}ReadOnly);\n"); - } - } else { - push(@getOwnPropertyDescriptorImpl, " ${namespaceMaybe}PropertySlot slot;\n"); - push(@getOwnPropertyDescriptorImpl, " slot.setCustomIndex(this, index, indexGetter);\n"); - # Assume that if there's a setter, the index will be writable - if ($dataNode->extendedAttributes->{"HasIndexSetter"} || $dataNode->extendedAttributes->{"HasCustomIndexSetter"}) { - push(@getOwnPropertyDescriptorImpl, " descriptor.setDescriptor(slot.getValue(exec, propertyName), ${namespaceMaybe}DontDelete);\n"); - } else { - push(@getOwnPropertyDescriptorImpl, " descriptor.setDescriptor(slot.getValue(exec, propertyName), ${namespaceMaybe}DontDelete | ${namespaceMaybe}ReadOnly);\n"); - } - } - push(@getOwnPropertyDescriptorImpl, " return true;\n"); - push(@getOwnPropertyDescriptorImpl, " }\n"); - } - - if ($dataNode->extendedAttributes->{"HasNameGetter"} || $dataNode->extendedAttributes->{"HasOverridingNameGetter"}) { - push(@getOwnPropertyDescriptorImpl, " if (canGetItemsForName(exec, static_cast<$implClassName*>(impl()), propertyName)) {\n"); - push(@getOwnPropertyDescriptorImpl, " ${namespaceMaybe}PropertySlot slot;\n"); - push(@getOwnPropertyDescriptorImpl, " slot.setCustom(this, nameGetter);\n"); - push(@getOwnPropertyDescriptorImpl, " descriptor.setDescriptor(slot.getValue(exec, propertyName), ReadOnly | DontDelete | DontEnum);\n"); - push(@getOwnPropertyDescriptorImpl, " return true;\n"); - push(@getOwnPropertyDescriptorImpl, " }\n"); - if ($inlined) { - $headerIncludes{"wtf/text/AtomicString.h"} = 1; - } else { - $implIncludes{"wtf/text/AtomicString.h"} = 1; - } - } - - if ($dataNode->extendedAttributes->{"HasOverridingNameGetter"}) { - &$manualLookupGetterGeneration(); - } - - if ($dataNode->extendedAttributes->{"DelegatingGetOwnPropertySlot"}) { - push(@getOwnPropertyDescriptorImpl, " if (getOwnPropertyDescriptorDelegate(exec, propertyName, descriptor))\n"); - push(@getOwnPropertyDescriptorImpl, " return true;\n"); - } - - if ($hasAttributes) { - if ($inlined) { - die "Cannot inline if NoStaticTables is set." if ($dataNode->extendedAttributes->{"NoStaticTables"}); - push(@getOwnPropertyDescriptorImpl, " return ${namespaceMaybe}getStaticValueDescriptor<$className, Base>(exec, s_info.staticPropHashTable, this, propertyName, descriptor);\n"); - } else { - push(@getOwnPropertyDescriptorImpl, " return ${namespaceMaybe}getStaticValueDescriptor<$className, Base>(exec, " . hashTableAccessor($dataNode->extendedAttributes->{"NoStaticTables"}, $className) . ", this, propertyName, descriptor);\n"); - } - } else { - push(@getOwnPropertyDescriptorImpl, " return Base::getOwnPropertyDescriptor(exec, propertyName, descriptor);\n"); - } - - return @getOwnPropertyDescriptorImpl; -} - -sub GenerateHeaderContentHeader -{ - my $dataNode = shift; - my $className = "JS" . $dataNode->name; - - my @headerContentHeader = split("\r", $headerTemplate); - - # - Add header protection - push(@headerContentHeader, "\n#ifndef $className" . "_h"); - push(@headerContentHeader, "\n#define $className" . "_h\n\n"); - - my $conditionalString = GenerateConditionalString($dataNode); - push(@headerContentHeader, "#if ${conditionalString}\n\n") if $conditionalString; - return @headerContentHeader; -} - -sub GenerateImplementationContentHeader -{ - my $dataNode = shift; - my $className = "JS" . $dataNode->name; - - my @implContentHeader = split("\r", $headerTemplate); - - push(@implContentHeader, "\n#include \"config.h\"\n"); - my $conditionalString = GenerateConditionalString($dataNode); - push(@implContentHeader, "\n#if ${conditionalString}\n\n") if $conditionalString; - push(@implContentHeader, "#include \"$className.h\"\n\n"); - return @implContentHeader; -} - -my %usesToJSNewlyCreated = ( - "CDATASection" => 1, - "Element" => 1, - "Node" => 1, - "Text" => 1, - "Touch" => 1, - "TouchList" => 1 -); - -sub GenerateHeader -{ - my $object = shift; - my $dataNode = shift; - - my $interfaceName = $dataNode->name; - my $className = "JS$interfaceName"; - my $implClassName = $interfaceName; - my @ancestorInterfaceNames = (); - my %structureFlags = (); - - # We only support multiple parents with SVG (for now). - if (@{$dataNode->parents} > 1) { - die "A class can't have more than one parent" unless $interfaceName =~ /SVG/; - $codeGenerator->AddMethodsConstantsAndAttributesFromParentClasses($dataNode, \@ancestorInterfaceNames); - } - - my $hasLegacyParent = $dataNode->extendedAttributes->{"LegacyParent"}; - my $hasRealParent = @{$dataNode->parents} > 0; - my $hasParent = $hasLegacyParent || $hasRealParent; - my $parentClassName = GetParentClassName($dataNode); - my $eventTarget = $dataNode->extendedAttributes->{"EventTarget"}; - my $needsMarkChildren = $dataNode->extendedAttributes->{"CustomMarkFunction"} || $dataNode->extendedAttributes->{"EventTarget"}; - - # - Add default header template and header protection - push(@headerContentHeader, GenerateHeaderContentHeader($dataNode)); - - if ($hasParent) { - $headerIncludes{"$parentClassName.h"} = 1; - } else { - $headerIncludes{"JSDOMBinding.h"} = 1; - $headerIncludes{"<runtime/JSGlobalObject.h>"} = 1; - $headerIncludes{"<runtime/ObjectPrototype.h>"} = 1; - } - - if ($dataNode->extendedAttributes->{"CustomCall"}) { - $headerIncludes{"<runtime/CallData.h>"} = 1; - } - - if ($dataNode->extendedAttributes->{"InlineGetOwnPropertySlot"}) { - $headerIncludes{"<runtime/Lookup.h>"} = 1; - $headerIncludes{"<wtf/AlwaysInline.h>"} = 1; - } - - if ($hasParent && $dataNode->extendedAttributes->{"GenerateNativeConverter"}) { - $headerIncludes{"$implClassName.h"} = 1; - } - - $headerIncludes{"<runtime/JSObjectWithGlobalObject.h>"} = 1; - $headerIncludes{"SVGElement.h"} = 1 if $className =~ /^JSSVG/; - - my $implType = $implClassName; - my ($svgPropertyType, $svgListPropertyType, $svgNativeType) = GetSVGPropertyTypes($implType); - $implType = $svgNativeType if $svgNativeType; - - my $svgPropertyOrListPropertyType; - $svgPropertyOrListPropertyType = $svgPropertyType if $svgPropertyType; - $svgPropertyOrListPropertyType = $svgListPropertyType if $svgListPropertyType; - - my $numConstants = @{$dataNode->constants}; - my $numAttributes = @{$dataNode->attributes}; - my $numFunctions = @{$dataNode->functions}; - - push(@headerContent, "\nnamespace WebCore {\n\n"); - - if ($codeGenerator->IsSVGAnimatedType($implClassName)) { - $headerIncludes{"$implClassName.h"} = 1; - } else { - # Implementation class forward declaration - AddClassForwardIfNeeded($implClassName) unless $svgPropertyOrListPropertyType; - } - - AddClassForwardIfNeeded("JSDOMWindowShell") if $interfaceName eq "DOMWindow"; - - # Class declaration - push(@headerContent, "class $className : public $parentClassName {\n"); - push(@headerContent, " typedef $parentClassName Base;\n"); - push(@headerContent, "public:\n"); - - # Constructor - if ($interfaceName eq "DOMWindow") { - push(@headerContent, " $className(NonNullPassRefPtr<JSC::Structure>, PassRefPtr<$implType>, JSDOMWindowShell*);\n"); - } elsif ($dataNode->extendedAttributes->{"IsWorkerContext"}) { - push(@headerContent, " $className(NonNullPassRefPtr<JSC::Structure>, PassRefPtr<$implType>);\n"); - } else { - push(@headerContent, " $className(NonNullPassRefPtr<JSC::Structure>, JSDOMGlobalObject*, PassRefPtr<$implType>);\n"); - } - - # Destructor - push(@headerContent, " virtual ~$className();\n") if (!$hasParent or $eventTarget or $interfaceName eq "DOMWindow"); - - # Prototype - push(@headerContent, " static JSC::JSObject* createPrototype(JSC::ExecState*, JSC::JSGlobalObject*);\n") unless ($dataNode->extendedAttributes->{"ExtendsDOMGlobalObject"}); - - $headerTrailingIncludes{"${className}Custom.h"} = 1 if $dataNode->extendedAttributes->{"CustomHeader"}; - - $implIncludes{"${className}Custom.h"} = 1 if !$dataNode->extendedAttributes->{"CustomHeader"} && ($dataNode->extendedAttributes->{"CustomPutFunction"} || $dataNode->extendedAttributes->{"DelegatingPutFunction"}); - - my $hasGetter = $numAttributes > 0 - || !($dataNode->extendedAttributes->{"OmitConstructor"} - || $dataNode->extendedAttributes->{"CustomConstructor"}) - || $dataNode->extendedAttributes->{"HasIndexGetter"} - || $dataNode->extendedAttributes->{"HasCustomIndexGetter"} - || $dataNode->extendedAttributes->{"HasNumericIndexGetter"} - || $dataNode->extendedAttributes->{"CustomGetOwnPropertySlot"} - || $dataNode->extendedAttributes->{"DelegatingGetOwnPropertySlot"} - || $dataNode->extendedAttributes->{"HasNameGetter"} - || $dataNode->extendedAttributes->{"HasOverridingNameGetter"}; - - # Getters - if ($hasGetter) { - push(@headerContent, " virtual bool getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::PropertySlot&);\n"); - push(@headerContent, " virtual bool getOwnPropertyDescriptor(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::PropertyDescriptor&);\n"); - push(@headerContent, " virtual bool getOwnPropertySlot(JSC::ExecState*, unsigned propertyName, JSC::PropertySlot&);\n") if ($dataNode->extendedAttributes->{"HasIndexGetter"} || $dataNode->extendedAttributes->{"HasCustomIndexGetter"} || $dataNode->extendedAttributes->{"HasNumericIndexGetter"}) && !$dataNode->extendedAttributes->{"HasOverridingNameGetter"}; - push(@headerContent, " bool getOwnPropertySlotDelegate(JSC::ExecState*, const JSC::Identifier&, JSC::PropertySlot&);\n") if $dataNode->extendedAttributes->{"DelegatingGetOwnPropertySlot"}; - push(@headerContent, " bool getOwnPropertyDescriptorDelegate(JSC::ExecState*, const JSC::Identifier&, JSC::PropertyDescriptor&);\n") if $dataNode->extendedAttributes->{"DelegatingGetOwnPropertySlot"}; - $structureFlags{"JSC::OverridesGetOwnPropertySlot"} = 1; - } - - # Check if we have any writable properties - my $hasReadWriteProperties = 0; - foreach (@{$dataNode->attributes}) { - if ($_->type !~ /^readonly\ attribute$/) { - $hasReadWriteProperties = 1; - } - } - - my $hasSetter = $hasReadWriteProperties - || $dataNode->extendedAttributes->{"CustomPutFunction"} - || $dataNode->extendedAttributes->{"DelegatingPutFunction"} - || $dataNode->extendedAttributes->{"HasCustomIndexSetter"}; - - # Getters - if ($hasSetter) { - push(@headerContent, " virtual void put(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSValue, JSC::PutPropertySlot&);\n"); - push(@headerContent, " virtual void put(JSC::ExecState*, unsigned propertyName, JSC::JSValue);\n") if $dataNode->extendedAttributes->{"HasCustomIndexSetter"}; - push(@headerContent, " bool putDelegate(JSC::ExecState*, const JSC::Identifier&, JSC::JSValue, JSC::PutPropertySlot&);\n") if $dataNode->extendedAttributes->{"DelegatingPutFunction"}; - } - - # Class info - push(@headerContent, " virtual const JSC::ClassInfo* classInfo() const { return &s_info; }\n"); - push(@headerContent, " static const JSC::ClassInfo s_info;\n\n"); - - # Structure ID - if ($interfaceName eq "DOMWindow") { - $structureFlags{"JSC::ImplementsHasInstance"} = 1; - $structureFlags{"JSC::NeedsThisConversion"} = 1; - } - push(@headerContent, - " static PassRefPtr<JSC::Structure> createStructure(JSC::JSValue prototype)\n" . - " {\n" . - " return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount);\n" . - " }\n\n"); - - # markChildren function - if ($needsMarkChildren) { - push(@headerContent, " virtual void markChildren(JSC::MarkStack&);\n\n"); - $structureFlags{"JSC::OverridesMarkChildren"} = 1; - } - - # Custom pushEventHandlerScope function - push(@headerContent, " virtual void pushEventHandlerScope(JSC::ExecState*, JSC::ScopeChain&) const;\n\n") if $dataNode->extendedAttributes->{"CustomPushEventHandlerScope"}; - - # Custom call functions - push(@headerContent, " virtual JSC::CallType getCallData(JSC::CallData&);\n\n") if $dataNode->extendedAttributes->{"CustomCall"}; - - # Custom deleteProperty function - push(@headerContent, " virtual bool deleteProperty(JSC::ExecState*, const JSC::Identifier&);\n") if $dataNode->extendedAttributes->{"CustomDeleteProperty"}; - - # Custom getPropertyNames function exists on DOMWindow - if ($interfaceName eq "DOMWindow") { - push(@headerContent, " virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, JSC::EnumerationMode mode = JSC::ExcludeDontEnumProperties);\n"); - $structureFlags{"JSC::OverridesGetPropertyNames"} = 1; - } - - # Custom defineProperty function exists on DOMWindow - push(@headerContent, " virtual bool defineOwnProperty(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::PropertyDescriptor&, bool shouldThrow);\n") if $interfaceName eq "DOMWindow"; - - # Custom getOwnPropertyNames function - if ($dataNode->extendedAttributes->{"CustomGetPropertyNames"} || $dataNode->extendedAttributes->{"HasIndexGetter"} || $dataNode->extendedAttributes->{"HasCustomIndexGetter"} || $dataNode->extendedAttributes->{"HasNumericIndexGetter"}) { - push(@headerContent, " virtual void getOwnPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, JSC::EnumerationMode mode = JSC::ExcludeDontEnumProperties);\n"); - $structureFlags{"JSC::OverridesGetPropertyNames"} = 1; - } - - # Custom defineGetter function - push(@headerContent, " virtual void defineGetter(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSObject* getterFunction, unsigned attributes);\n") if $dataNode->extendedAttributes->{"CustomDefineGetter"}; - - # Custom defineSetter function - push(@headerContent, " virtual void defineSetter(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSObject* setterFunction, unsigned attributes);\n") if $dataNode->extendedAttributes->{"CustomDefineSetter"}; - - # Custom lookupGetter function - push(@headerContent, " virtual JSC::JSValue lookupGetter(JSC::ExecState*, const JSC::Identifier& propertyName);\n") if $dataNode->extendedAttributes->{"CustomLookupGetter"}; - - # Custom lookupSetter function - push(@headerContent, " virtual JSC::JSValue lookupSetter(JSC::ExecState*, const JSC::Identifier& propertyName);\n") if $dataNode->extendedAttributes->{"CustomLookupSetter"}; - - # Override toBoolean to return false for objects that want to 'MasqueradesAsUndefined'. - if ($dataNode->extendedAttributes->{"MasqueradesAsUndefined"}) { - push(@headerContent, " virtual bool toBoolean(JSC::ExecState*) const { return false; };\n"); - $structureFlags{"JSC::MasqueradesAsUndefined"} = 1; - } - - # Constructor object getter - push(@headerContent, " static JSC::JSValue getConstructor(JSC::ExecState*, JSC::JSGlobalObject*);\n") if (!($dataNode->extendedAttributes->{"OmitConstructor"} || $dataNode->extendedAttributes->{"CustomConstructor"})); - - my $numCustomFunctions = 0; - my $numCustomAttributes = 0; - - # Attribute and function enums - if ($numAttributes > 0) { - foreach (@{$dataNode->attributes}) { - my $attribute = $_; - $numCustomAttributes++ if $attribute->signature->extendedAttributes->{"Custom"} || $attribute->signature->extendedAttributes->{"JSCCustom"}; - $numCustomAttributes++ if $attribute->signature->extendedAttributes->{"CustomGetter"} || $attribute->signature->extendedAttributes->{"JSCCustomGetter"}; - $numCustomAttributes++ if $attribute->signature->extendedAttributes->{"CustomSetter"} || $attribute->signature->extendedAttributes->{"JSCCustomSetter"}; - if ($attribute->signature->extendedAttributes->{"CachedAttribute"}) { - push(@headerContent, " static const unsigned " . $attribute->signature->name . "Slot = $numCachedAttributes + Base::AnonymousSlotCount;\n"); - $numCachedAttributes++; - } - } - } - - if ($numCachedAttributes > 0) { - push(@headerContent, " using $parentClassName" . "::putAnonymousValue;\n"); - push(@headerContent, " using $parentClassName" . "::getAnonymousValue;\n"); - } - if ($numCustomAttributes > 0) { - push(@headerContent, "\n // Custom attributes\n"); - - foreach my $attribute (@{$dataNode->attributes}) { - if ($attribute->signature->extendedAttributes->{"Custom"} || $attribute->signature->extendedAttributes->{"JSCCustom"}) { - push(@headerContent, " JSC::JSValue " . $codeGenerator->WK_lcfirst($attribute->signature->name) . "(JSC::ExecState*) const;\n"); - if ($attribute->type !~ /^readonly/) { - push(@headerContent, " void set" . $codeGenerator->WK_ucfirst($attribute->signature->name) . "(JSC::ExecState*, JSC::JSValue);\n"); - } - } elsif ($attribute->signature->extendedAttributes->{"CustomGetter"} || $attribute->signature->extendedAttributes->{"JSCCustomGetter"}) { - push(@headerContent, " JSC::JSValue " . $codeGenerator->WK_lcfirst($attribute->signature->name) . "(JSC::ExecState*) const;\n"); - } elsif ($attribute->signature->extendedAttributes->{"CustomSetter"} || $attribute->signature->extendedAttributes->{"JSCCustomSetter"}) { - if ($attribute->type !~ /^readonly/) { - push(@headerContent, " void set" . $codeGenerator->WK_ucfirst($attribute->signature->name) . "(JSC::ExecState*, JSC::JSValue);\n"); - } - } - } - } - - foreach my $function (@{$dataNode->functions}) { - $numCustomFunctions++ if $function->signature->extendedAttributes->{"Custom"} || $function->signature->extendedAttributes->{"JSCCustom"}; - } - - if ($numCustomFunctions > 0) { - push(@headerContent, "\n // Custom functions\n"); - foreach my $function (@{$dataNode->functions}) { - if ($function->signature->extendedAttributes->{"Custom"} || $function->signature->extendedAttributes->{"JSCCustom"}) { - my $functionImplementationName = $function->signature->extendedAttributes->{"ImplementationFunction"} || $codeGenerator->WK_lcfirst($function->signature->name); - push(@headerContent, " JSC::JSValue " . $functionImplementationName . "(JSC::ExecState*);\n"); - } - } - } - - if (!$hasParent) { - push(@headerContent, " $implType* impl() const { return m_impl.get(); }\n\n"); - push(@headerContent, "private:\n"); - push(@headerContent, " RefPtr<$implType> m_impl;\n"); - } elsif ($dataNode->extendedAttributes->{"GenerateNativeConverter"}) { - push(@headerContent, " $implClassName* impl() const\n"); - push(@headerContent, " {\n"); - push(@headerContent, " return static_cast<$implClassName*>(Base::impl());\n"); - push(@headerContent, " }\n"); - } - - # anonymous slots - if ($numCachedAttributes) { - push(@headerContent, "public:\n"); - push(@headerContent, " static const unsigned AnonymousSlotCount = $numCachedAttributes + Base::AnonymousSlotCount;\n"); - } - - # structure flags - push(@headerContent, "protected:\n"); - push(@headerContent, " static const unsigned StructureFlags = "); - foreach my $structureFlag (keys %structureFlags) { - push(@headerContent, $structureFlag . " | "); - } - push(@headerContent, "Base::StructureFlags;\n"); - - # Index getter - if ($dataNode->extendedAttributes->{"HasIndexGetter"}) { - push(@headerContent, " static JSC::JSValue indexGetter(JSC::ExecState*, JSC::JSValue, unsigned);\n"); - } - if ($dataNode->extendedAttributes->{"HasCustomIndexGetter"} || $dataNode->extendedAttributes->{"HasNumericIndexGetter"}) { - push(@headerContent, " JSC::JSValue getByIndex(JSC::ExecState*, unsigned index);\n"); - - } - - # Index setter - if ($dataNode->extendedAttributes->{"HasCustomIndexSetter"}) { - push(@headerContent, " void indexSetter(JSC::ExecState*, unsigned index, JSC::JSValue);\n"); - } - # Name getter - if ($dataNode->extendedAttributes->{"HasNameGetter"} || $dataNode->extendedAttributes->{"HasOverridingNameGetter"}) { - push(@headerContent, "private:\n"); - push(@headerContent, " static bool canGetItemsForName(JSC::ExecState*, $implClassName*, const JSC::Identifier&);\n"); - push(@headerContent, " static JSC::JSValue nameGetter(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);\n"); - } - - push(@headerContent, "};\n\n"); - - if ($dataNode->extendedAttributes->{"InlineGetOwnPropertySlot"} && !$dataNode->extendedAttributes->{"CustomGetOwnPropertySlot"}) { - push(@headerContent, "ALWAYS_INLINE bool ${className}::getOwnPropertySlot(JSC::ExecState* exec, const JSC::Identifier& propertyName, JSC::PropertySlot& slot)\n"); - push(@headerContent, "{\n"); - push(@headerContent, GenerateGetOwnPropertySlotBody($dataNode, $interfaceName, $className, $implClassName, $numAttributes > 0, 1)); - push(@headerContent, "}\n\n"); - push(@headerContent, "ALWAYS_INLINE bool ${className}::getOwnPropertyDescriptor(JSC::ExecState* exec, const JSC::Identifier& propertyName, JSC::PropertyDescriptor& descriptor)\n"); - push(@headerContent, "{\n"); - push(@headerContent, GenerateGetOwnPropertyDescriptorBody($dataNode, $interfaceName, $className, $implClassName, $numAttributes > 0, 1)); - push(@headerContent, "}\n\n"); - } - - if (!$hasParent || $dataNode->extendedAttributes->{"GenerateToJS"} || $dataNode->extendedAttributes->{"CustomToJS"}) { - if ($svgPropertyType) { - push(@headerContent, "JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, $implType*);\n"); - } else { - push(@headerContent, "JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, $implType*);\n"); - } - } - if (!$hasParent || $dataNode->extendedAttributes->{"GenerateNativeConverter"}) { - if ($interfaceName eq "NodeFilter") { - push(@headerContent, "PassRefPtr<NodeFilter> toNodeFilter(JSC::JSValue);\n"); - } else { - push(@headerContent, "$implType* to${interfaceName}(JSC::JSValue);\n"); - } - } - if ($usesToJSNewlyCreated{$interfaceName}) { - push(@headerContent, "JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*, $interfaceName*);\n"); - } - - push(@headerContent, "\n"); - - # Add prototype declaration. - %structureFlags = (); - push(@headerContent, "class ${className}Prototype : public JSC::JSObjectWithGlobalObject {\n"); - push(@headerContent, " typedef JSC::JSObjectWithGlobalObject Base;\n"); - push(@headerContent, "public:\n"); - if ($interfaceName eq "DOMWindow") { - push(@headerContent, " void* operator new(size_t);\n"); - } elsif ($dataNode->extendedAttributes->{"IsWorkerContext"}) { - push(@headerContent, " void* operator new(size_t, JSC::JSGlobalData*);\n"); - } else { - push(@headerContent, " static JSC::JSObject* self(JSC::ExecState*, JSC::JSGlobalObject*);\n"); - } - push(@headerContent, " virtual const JSC::ClassInfo* classInfo() const { return &s_info; }\n"); - push(@headerContent, " static const JSC::ClassInfo s_info;\n"); - if ($numFunctions > 0 || $numConstants > 0 || $dataNode->extendedAttributes->{"DelegatingPrototypeGetOwnPropertySlot"}) { - push(@headerContent, " virtual bool getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier&, JSC::PropertySlot&);\n"); - push(@headerContent, " virtual bool getOwnPropertyDescriptor(JSC::ExecState*, const JSC::Identifier&, JSC::PropertyDescriptor&);\n"); - push(@headerContent, " bool getOwnPropertySlotDelegate(JSC::ExecState*, const JSC::Identifier&, JSC::PropertySlot&);\n") if $dataNode->extendedAttributes->{"DelegatingPrototypeGetOwnPropertySlot"}; - push(@headerContent, " bool getOwnPropertyDescriptorDelegate(JSC::ExecState*, const JSC::Identifier&, JSC::PropertyDescriptor&);\n") if $dataNode->extendedAttributes->{"DelegatingPrototypeGetOwnPropertySlot"}; - $structureFlags{"JSC::OverridesGetOwnPropertySlot"} = 1; - } - if ($dataNode->extendedAttributes->{"CustomMarkFunction"} or $needsMarkChildren) { - $structureFlags{"JSC::OverridesMarkChildren"} = 1; - } - push(@headerContent, - " static PassRefPtr<JSC::Structure> createStructure(JSC::JSValue prototype)\n" . - " {\n" . - " return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount);\n" . - " }\n"); - if ($dataNode->extendedAttributes->{"DelegatingPrototypePutFunction"}) { - push(@headerContent, " virtual void put(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSValue, JSC::PutPropertySlot&);\n"); - push(@headerContent, " bool putDelegate(JSC::ExecState*, const JSC::Identifier&, JSC::JSValue, JSC::PutPropertySlot&);\n"); - } - - # Custom defineGetter function - push(@headerContent, " virtual void defineGetter(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSObject* getterFunction, unsigned attributes);\n") if $dataNode->extendedAttributes->{"CustomPrototypeDefineGetter"}; - - push(@headerContent, " ${className}Prototype(JSC::JSGlobalObject* globalObject, NonNullPassRefPtr<JSC::Structure> structure) : JSC::JSObjectWithGlobalObject(globalObject, structure) { }\n"); - - # structure flags - push(@headerContent, "protected:\n"); - push(@headerContent, " static const unsigned StructureFlags = "); - foreach my $structureFlag (keys %structureFlags) { - push(@headerContent, $structureFlag . " | "); - } - push(@headerContent, "Base::StructureFlags;\n"); - - push(@headerContent, "};\n\n"); - - # Conditionally emit the constructor object's declaration - if ($dataNode->extendedAttributes->{"CustomConstructFunction"}) { - GenerateConstructorDeclaration(\@headerContent, $className, $dataNode); - } - - - if ($numFunctions > 0) { - push(@headerContent,"// Functions\n\n"); - foreach my $function (@{$dataNode->functions}) { - next if $function->{overloadIndex} && $function->{overloadIndex} > 1; - my $functionName = $codeGenerator->WK_lcfirst($className) . "PrototypeFunction" . $codeGenerator->WK_ucfirst($function->signature->name); - push(@headerContent, "JSC::EncodedJSValue JSC_HOST_CALL ${functionName}(JSC::ExecState*);\n"); - } - } - - if ($numAttributes > 0 || !($dataNode->extendedAttributes->{"OmitConstructor"} || $dataNode->extendedAttributes->{"CustomConstructor"})) { - push(@headerContent,"// Attributes\n\n"); - foreach my $attribute (@{$dataNode->attributes}) { - my $getter = "js" . $interfaceName . $codeGenerator->WK_ucfirst($attribute->signature->name) . ($attribute->signature->type =~ /Constructor$/ ? "Constructor" : ""); - push(@headerContent, "JSC::JSValue ${getter}(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);\n"); - unless ($attribute->type =~ /readonly/) { - my $setter = "setJS" . $interfaceName . $codeGenerator->WK_ucfirst($attribute->signature->name) . ($attribute->signature->type =~ /Constructor$/ ? "Constructor" : ""); - push(@headerContent, "void ${setter}(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);\n"); - } - } - - if (!($dataNode->extendedAttributes->{"OmitConstructor"} || $dataNode->extendedAttributes->{"CustomConstructor"})) { - my $getter = "js" . $interfaceName . "Constructor"; - push(@headerContent, "JSC::JSValue ${getter}(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);\n"); - } - } - - if ($numConstants > 0) { - push(@headerContent,"// Constants\n\n"); - foreach my $constant (@{$dataNode->constants}) { - my $getter = "js" . $interfaceName . $codeGenerator->WK_ucfirst($constant->name); - push(@headerContent, "JSC::JSValue ${getter}(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);\n"); - } - } - - my $conditionalString = GenerateConditionalString($dataNode); - push(@headerContent, "\n} // namespace WebCore\n\n"); - push(@headerContent, "#endif // ${conditionalString}\n\n") if $conditionalString; - push(@headerContent, "#endif\n"); - - # - Generate dependencies. - if ($writeDependencies && @ancestorInterfaceNames) { - push(@depsContent, "$className.h : ", join(" ", map { "$_.idl" } @ancestorInterfaceNames), "\n"); - push(@depsContent, map { "$_.idl :\n" } @ancestorInterfaceNames); - } -} - -sub GenerateAttributesHashTable($$) -{ - my ($object, $dataNode) = @_; - - # FIXME: These should be functions on $dataNode. - my $interfaceName = $dataNode->name; - my $className = "JS$interfaceName"; - - # - Add all attributes in a hashtable definition - my $numAttributes = @{$dataNode->attributes}; - $numAttributes++ if (!($dataNode->extendedAttributes->{"OmitConstructor"} || $dataNode->extendedAttributes->{"CustomConstructor"})); - - return 0 if !$numAttributes; - - my $hashSize = $numAttributes; - my $hashName = $className . "Table"; - - my @hashKeys = (); - my @hashSpecials = (); - my @hashValue1 = (); - my @hashValue2 = (); - my %conditionals = (); - - my @entries = (); - - foreach my $attribute (@{$dataNode->attributes}) { - my $name = $attribute->signature->name; - push(@hashKeys, $name); - - my @specials = (); - push(@specials, "DontDelete") unless $attribute->signature->extendedAttributes->{"Deletable"}; - push(@specials, "DontEnum") if $attribute->signature->extendedAttributes->{"DontEnum"}; - push(@specials, "ReadOnly") if $attribute->type =~ /readonly/; - my $special = (@specials > 0) ? join(" | ", @specials) : "0"; - push(@hashSpecials, $special); - - my $getter = "js" . $interfaceName . $codeGenerator->WK_ucfirst($attribute->signature->name) . ($attribute->signature->type =~ /Constructor$/ ? "Constructor" : ""); - push(@hashValue1, $getter); - - if ($attribute->type =~ /readonly/) { - push(@hashValue2, "0"); - } else { - my $setter = "setJS" . $interfaceName . $codeGenerator->WK_ucfirst($attribute->signature->name) . ($attribute->signature->type =~ /Constructor$/ ? "Constructor" : ""); - push(@hashValue2, $setter); - } - - my $conditional = $attribute->signature->extendedAttributes->{"Conditional"}; - if ($conditional) { - $conditionals{$name} = $conditional; - } - } - - if (!($dataNode->extendedAttributes->{"OmitConstructor"} || $dataNode->extendedAttributes->{"CustomConstructor"})) { - push(@hashKeys, "constructor"); - my $getter = "js" . $interfaceName . "Constructor"; - push(@hashValue1, $getter); - push(@hashValue2, "0"); - push(@hashSpecials, "DontEnum | ReadOnly"); # FIXME: Setting the constructor should be possible. - } - - $object->GenerateHashTable($hashName, $hashSize, - \@hashKeys, \@hashSpecials, - \@hashValue1, \@hashValue2, - \%conditionals); - return $numAttributes; -} - -sub GenerateParametersCheckExpression -{ - my $numParameters = shift; - my $function = shift; - - my @andExpression = (); - push(@andExpression, "exec->argumentCount() == $numParameters"); - my $parameterIndex = 0; - foreach $parameter (@{$function->parameters}) { - last if $parameterIndex >= $numParameters; - my $value = "exec->argument($parameterIndex)"; - my $type = $codeGenerator->StripModule($parameter->type); - - # Only DOMString or wrapper types are checked. - # For DOMString, Null, Undefined and any Object are accepted too, as - # these are acceptable values for a DOMString argument (any Object can - # be converted to a string via .toString). - if ($codeGenerator->IsStringType($type)) { - push(@andExpression, "(${value}.isNull() || ${value}.isUndefined() || ${value}.isString() || ${value}.isObject())"); - } elsif ($parameter->extendedAttributes->{"Callback"}) { - # For Callbacks only checks if the value is null or object. - push(@andExpression, "(${value}.isNull() || ${value}.isObject())"); - } elsif (!IsNativeType($type)) { - push(@andExpression, "(${value}.isNull() || (${value}.isObject() && asObject(${value})->inherits(&JS${type}::s_info)))"); - } - $parameterIndex++; - } - my $res = join(" && ", @andExpression); - $res = "($res)" if @andExpression > 1; - return $res; -} - -sub GenerateFunctionParametersCheck -{ - my $function = shift; - - my @orExpression = (); - my $numParameters = 0; - foreach $parameter (@{$function->parameters}) { - if ($parameter->extendedAttributes->{"Optional"}) { - push(@orExpression, GenerateParametersCheckExpression($numParameters, $function)); - } - $numParameters++; - } - push(@orExpression, GenerateParametersCheckExpression($numParameters, $function)); - return join(" || ", @orExpression); -} - -sub GenerateOverloadedPrototypeFunction -{ - my $function = shift; - my $dataNode = shift; - my $implClassName = shift; - - # Generate code for choosing the correct overload to call. Overloads are - # chosen based on the total number of arguments passed and the type of - # values passed in non-primitive argument slots. When more than a single - # overload is applicable, precedence is given according to the order of - # declaration in the IDL. - - my $functionName = "js${implClassName}PrototypeFunction" . $codeGenerator->WK_ucfirst($function->signature->name); - - push(@implContent, "EncodedJSValue JSC_HOST_CALL ${functionName}(ExecState* exec)\n"); - push(@implContent, <<END); -{ -END - foreach my $overload (@{$function->{overloads}}) { - my $parametersCheck = GenerateFunctionParametersCheck($overload); - push(@implContent, " if ($parametersCheck)\n"); - push(@implContent, " return ${functionName}$overload->{overloadIndex}(exec);\n"); - } - push(@implContent, <<END); - return throwVMTypeError(exec); -} - -END -} - -sub GenerateImplementation -{ - my ($object, $dataNode) = @_; - - my $interfaceName = $dataNode->name; - my $className = "JS$interfaceName"; - my $implClassName = $interfaceName; - - my $hasLegacyParent = $dataNode->extendedAttributes->{"LegacyParent"}; - my $hasRealParent = @{$dataNode->parents} > 0; - my $hasParent = $hasLegacyParent || $hasRealParent; - my $parentClassName = GetParentClassName($dataNode); - my $visibleClassName = GetVisibleClassName($interfaceName); - my $eventTarget = $dataNode->extendedAttributes->{"EventTarget"}; - my $needsMarkChildren = $dataNode->extendedAttributes->{"CustomMarkFunction"} || $dataNode->extendedAttributes->{"EventTarget"}; - - # - Add default header template - push(@implContentHeader, GenerateImplementationContentHeader($dataNode)); - - AddIncludesForSVGAnimatedType($interfaceName) if $className =~ /^JSSVGAnimated/; - - $implIncludes{"<wtf/GetPtr.h>"} = 1; - $implIncludes{"<runtime/PropertyNameArray.h>"} = 1 if $dataNode->extendedAttributes->{"HasIndexGetter"} || $dataNode->extendedAttributes->{"HasCustomIndexGetter"} || $dataNode->extendedAttributes->{"HasNumericIndexGetter"}; - - AddIncludesForType($interfaceName); - - @implContent = (); - - push(@implContent, "\nusing namespace JSC;\n\n"); - push(@implContent, "namespace WebCore {\n\n"); - - push(@implContent, "ASSERT_CLASS_FITS_IN_CELL($className);\n\n"); - - my $numAttributes = GenerateAttributesHashTable($object, $dataNode); - - my $numConstants = @{$dataNode->constants}; - my $numFunctions = @{$dataNode->functions}; - - # - Add all constants - if (!($dataNode->extendedAttributes->{"OmitConstructor"} || $dataNode->extendedAttributes->{"CustomConstructor"})) { - $hashSize = $numConstants; - $hashName = $className . "ConstructorTable"; - - @hashKeys = (); - @hashValue1 = (); - @hashValue2 = (); - @hashSpecials = (); - - # FIXME: we should not need a function for every constant. - foreach my $constant (@{$dataNode->constants}) { - push(@hashKeys, $constant->name); - my $getter = "js" . $interfaceName . $codeGenerator->WK_ucfirst($constant->name); - push(@hashValue1, $getter); - push(@hashValue2, "0"); - push(@hashSpecials, "DontDelete | ReadOnly"); - } - - $object->GenerateHashTable($hashName, $hashSize, - \@hashKeys, \@hashSpecials, - \@hashValue1, \@hashValue2); - - push(@implContent, $codeGenerator->GenerateCompileTimeCheckForEnumsIfNeeded($dataNode)); - - my $protoClassName = "${className}Prototype"; - - GenerateConstructorDeclaration(\@implContent, $className, $dataNode) unless $dataNode->extendedAttributes->{"CustomConstructFunction"}; - GenerateConstructorDefinition(\@implContent, $className, $protoClassName, $interfaceName, $visibleClassName, $dataNode); - } - - # - Add functions and constants to a hashtable definition - $hashSize = $numFunctions + $numConstants; - $hashName = $className . "PrototypeTable"; - - @hashKeys = (); - @hashValue1 = (); - @hashValue2 = (); - @hashSpecials = (); - - # FIXME: we should not need a function for every constant. - foreach my $constant (@{$dataNode->constants}) { - push(@hashKeys, $constant->name); - my $getter = "js" . $interfaceName . $codeGenerator->WK_ucfirst($constant->name); - push(@hashValue1, $getter); - push(@hashValue2, "0"); - push(@hashSpecials, "DontDelete | ReadOnly"); - } - - foreach my $function (@{$dataNode->functions}) { - next if $function->{overloadIndex} && $function->{overloadIndex} > 1; - my $name = $function->signature->name; - push(@hashKeys, $name); - - my $value = $codeGenerator->WK_lcfirst($className) . "PrototypeFunction" . $codeGenerator->WK_ucfirst($name); - push(@hashValue1, $value); - - my $numParameters = @{$function->parameters}; - push(@hashValue2, $numParameters); - - my @specials = (); - push(@specials, "DontDelete") unless $function->signature->extendedAttributes->{"Deletable"}; - push(@specials, "DontEnum") if $function->signature->extendedAttributes->{"DontEnum"}; - push(@specials, "Function"); - my $special = (@specials > 0) ? join(" | ", @specials) : "0"; - push(@hashSpecials, $special); - } - - $object->GenerateHashTable($hashName, $hashSize, - \@hashKeys, \@hashSpecials, - \@hashValue1, \@hashValue2); - - if ($dataNode->extendedAttributes->{"NoStaticTables"}) { - push(@implContent, "static const HashTable* get${className}PrototypeTable(ExecState* exec)\n"); - push(@implContent, "{\n"); - push(@implContent, " return getHashTableForGlobalData(exec->globalData(), &${className}PrototypeTable);\n"); - push(@implContent, "}\n"); - push(@implContent, "const ClassInfo ${className}Prototype::s_info = { \"${visibleClassName}Prototype\", 0, 0, get${className}PrototypeTable };\n\n"); - } else { - push(@implContent, "const ClassInfo ${className}Prototype::s_info = { \"${visibleClassName}Prototype\", 0, &${className}PrototypeTable, 0 };\n\n"); - } - if ($interfaceName eq "DOMWindow") { - push(@implContent, "void* ${className}Prototype::operator new(size_t size)\n"); - push(@implContent, "{\n"); - push(@implContent, " return JSDOMWindow::commonJSGlobalData()->heap.allocate(size);\n"); - push(@implContent, "}\n\n"); - } elsif ($dataNode->extendedAttributes->{"IsWorkerContext"}) { - push(@implContent, "void* ${className}Prototype::operator new(size_t size, JSGlobalData* globalData)\n"); - push(@implContent, "{\n"); - push(@implContent, " return globalData->heap.allocate(size);\n"); - push(@implContent, "}\n\n"); - } else { - push(@implContent, "JSObject* ${className}Prototype::self(ExecState* exec, JSGlobalObject* globalObject)\n"); - push(@implContent, "{\n"); - push(@implContent, " return getDOMPrototype<${className}>(exec, globalObject);\n"); - push(@implContent, "}\n\n"); - } - if ($numConstants > 0 || $numFunctions > 0 || $dataNode->extendedAttributes->{"DelegatingPrototypeGetOwnPropertySlot"}) { - push(@implContent, "bool ${className}Prototype::getOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)\n"); - push(@implContent, "{\n"); - - if ($dataNode->extendedAttributes->{"DelegatingPrototypeGetOwnPropertySlot"}) { - push(@implContent, " if (getOwnPropertySlotDelegate(exec, propertyName, slot))\n"); - push(@implContent, " return true;\n"); - } - - if ($numConstants eq 0 && $numFunctions eq 0) { - push(@implContent, " return Base::getOwnPropertySlot(exec, propertyName, slot);\n"); - } elsif ($numConstants eq 0) { - push(@implContent, " return getStaticFunctionSlot<JSObject>(exec, " . prototypeHashTableAccessor($dataNode->extendedAttributes->{"NoStaticTables"}, $className) . ", this, propertyName, slot);\n"); - } elsif ($numFunctions eq 0) { - push(@implContent, " return getStaticValueSlot<${className}Prototype, JSObject>(exec, " . prototypeHashTableAccessor($dataNode->extendedAttributes->{"NoStaticTables"}, $className) . ", this, propertyName, slot);\n"); - } else { - push(@implContent, " return getStaticPropertySlot<${className}Prototype, JSObject>(exec, " . prototypeHashTableAccessor($dataNode->extendedAttributes->{"NoStaticTables"}, $className) . ", this, propertyName, slot);\n"); - } - push(@implContent, "}\n\n"); - - push(@implContent, "bool ${className}Prototype::getOwnPropertyDescriptor(ExecState* exec, const Identifier& propertyName, PropertyDescriptor& descriptor)\n"); - push(@implContent, "{\n"); - - if ($dataNode->extendedAttributes->{"DelegatingPrototypeGetOwnPropertySlot"}) { - push(@implContent, " if (getOwnPropertyDescriptorDelegate(exec, propertyName, descriptor))\n"); - push(@implContent, " return true;\n"); - } - - if ($numConstants eq 0 && $numFunctions eq 0) { - push(@implContent, " return Base::getOwnPropertyDescriptor(exec, propertyName, descriptor);\n"); - } elsif ($numConstants eq 0) { - push(@implContent, " return getStaticFunctionDescriptor<JSObject>(exec, " . prototypeHashTableAccessor($dataNode->extendedAttributes->{"NoStaticTables"}, $className) . ", this, propertyName, descriptor);\n"); - } elsif ($numFunctions eq 0) { - push(@implContent, " return getStaticValueDescriptor<${className}Prototype, JSObject>(exec, " . prototypeHashTableAccessor($dataNode->extendedAttributes->{"NoStaticTables"}, $className) . ", this, propertyName, descriptor);\n"); - } else { - push(@implContent, " return getStaticPropertyDescriptor<${className}Prototype, JSObject>(exec, " . prototypeHashTableAccessor($dataNode->extendedAttributes->{"NoStaticTables"}, $className) . ", this, propertyName, descriptor);\n"); - } - push(@implContent, "}\n\n"); - } - - if ($dataNode->extendedAttributes->{"DelegatingPrototypePutFunction"}) { - push(@implContent, "void ${className}Prototype::put(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)\n"); - push(@implContent, "{\n"); - push(@implContent, " if (putDelegate(exec, propertyName, value, slot))\n"); - push(@implContent, " return;\n"); - push(@implContent, " Base::put(exec, propertyName, value, slot);\n"); - push(@implContent, "}\n\n"); - } - - # - Initialize static ClassInfo object - if ($numAttributes > 0 && $dataNode->extendedAttributes->{"NoStaticTables"}) { - push(@implContent, "static const HashTable* get${className}Table(ExecState* exec)\n"); - push(@implContent, "{\n"); - push(@implContent, " return getHashTableForGlobalData(exec->globalData(), &${className}Table);\n"); - push(@implContent, "}\n"); - } - push(@implContent, "const ClassInfo $className" . "::s_info = { \"${visibleClassName}\", "); - if ($hasParent) { - push(@implContent, "&" . $parentClassName . "::s_info, "); - } else { - push(@implContent, "0, "); - } - - if ($numAttributes > 0 && !$dataNode->extendedAttributes->{"NoStaticTables"}) { - push(@implContent, "&${className}Table"); - } else { - push(@implContent, "0"); - } - if ($numAttributes > 0 && $dataNode->extendedAttributes->{"NoStaticTables"}) { - push(@implContent, ", get${className}Table "); - } else { - push(@implContent, ", 0 "); - } - push(@implContent, "};\n\n"); - - my $implType = $implClassName; - my ($svgPropertyType, $svgListPropertyType, $svgNativeType) = GetSVGPropertyTypes($implType); - $implType = $svgNativeType if $svgNativeType; - - my $svgPropertyOrListPropertyType; - $svgPropertyOrListPropertyType = $svgPropertyType if $svgPropertyType; - $svgPropertyOrListPropertyType = $svgListPropertyType if $svgListPropertyType; - - # Constructor - if ($interfaceName eq "DOMWindow") { - AddIncludesForType("JSDOMWindowShell"); - push(@implContent, "${className}::$className(NonNullPassRefPtr<Structure> structure, PassRefPtr<$implType> impl, JSDOMWindowShell* shell)\n"); - push(@implContent, " : $parentClassName(structure, impl, shell)\n"); - } elsif ($dataNode->extendedAttributes->{"IsWorkerContext"}) { - AddIncludesForType($interfaceName); - push(@implContent, "${className}::$className(NonNullPassRefPtr<Structure> structure, PassRefPtr<$implType> impl)\n"); - push(@implContent, " : $parentClassName(structure, impl)\n"); - } else { - push(@implContent, "${className}::$className(NonNullPassRefPtr<Structure> structure, JSDOMGlobalObject* globalObject, PassRefPtr<$implType> impl)\n"); - if ($hasParent) { - push(@implContent, " : $parentClassName(structure, globalObject, impl)\n"); - } else { - push(@implContent, " : $parentClassName(structure, globalObject)\n"); - push(@implContent, " , m_impl(impl)\n"); - } - } - push(@implContent, "{\n"); - if ($numCachedAttributes > 0) { - push(@implContent, " for (unsigned i = Base::AnonymousSlotCount; i < AnonymousSlotCount; i++)\n"); - push(@implContent, " putAnonymousValue(i, JSValue());\n"); - } - push(@implContent, "}\n\n"); - - # Destructor - if (!$hasParent || $eventTarget) { - push(@implContent, "${className}::~$className()\n"); - push(@implContent, "{\n"); - - if ($eventTarget) { - $implIncludes{"RegisteredEventListener.h"} = 1; - push(@implContent, " impl()->invalidateJSEventListeners(this);\n"); - } - - if (!$dataNode->extendedAttributes->{"ExtendsDOMGlobalObject"}) { - if ($interfaceName eq "Node") { - push(@implContent, " forgetDOMNode(this, impl(), impl()->document());\n"); - } else { - push(@implContent, " forgetDOMObject(this, impl());\n"); - } - } - - push(@implContent, "}\n\n"); - } - - if ($needsMarkChildren && !$dataNode->extendedAttributes->{"CustomMarkFunction"}) { - push(@implContent, "void ${className}::markChildren(MarkStack& markStack)\n"); - push(@implContent, "{\n"); - push(@implContent, " Base::markChildren(markStack);\n"); - push(@implContent, " impl()->markJSEventListeners(markStack);\n"); - push(@implContent, "}\n\n"); - } - - if (!$dataNode->extendedAttributes->{"ExtendsDOMGlobalObject"}) { - push(@implContent, "JSObject* ${className}::createPrototype(ExecState* exec, JSGlobalObject* globalObject)\n"); - push(@implContent, "{\n"); - if ($hasParent && $parentClassName ne "JSC::DOMNodeFilter") { - push(@implContent, " return new (exec) ${className}Prototype(globalObject, ${className}Prototype::createStructure(${parentClassName}Prototype::self(exec, globalObject)));\n"); - } else { - push(@implContent, " return new (exec) ${className}Prototype(globalObject, ${className}Prototype::createStructure(globalObject->objectPrototype()));\n"); - } - push(@implContent, "}\n\n"); - } - - my $hasGetter = $numAttributes > 0 - || !($dataNode->extendedAttributes->{"OmitConstructor"} - || $dataNode->extendedAttributes->{"CustomConstructor"}) - || $dataNode->extendedAttributes->{"HasIndexGetter"} - || $dataNode->extendedAttributes->{"HasCustomIndexGetter"} - || $dataNode->extendedAttributes->{"HasNumericIndexGetter"} - || $dataNode->extendedAttributes->{"DelegatingGetOwnPropertySlot"} - || $dataNode->extendedAttributes->{"CustomGetOwnPropertySlot"} - || $dataNode->extendedAttributes->{"HasNameGetter"} - || $dataNode->extendedAttributes->{"HasOverridingNameGetter"}; - - # Attributes - if ($hasGetter) { - if (!$dataNode->extendedAttributes->{"InlineGetOwnPropertySlot"} && !$dataNode->extendedAttributes->{"CustomGetOwnPropertySlot"}) { - push(@implContent, "bool ${className}::getOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)\n"); - push(@implContent, "{\n"); - push(@implContent, GenerateGetOwnPropertySlotBody($dataNode, $interfaceName, $className, $implClassName, $numAttributes > 0, 0)); - push(@implContent, "}\n\n"); - push(@implContent, "bool ${className}::getOwnPropertyDescriptor(ExecState* exec, const Identifier& propertyName, PropertyDescriptor& descriptor)\n"); - push(@implContent, "{\n"); - push(@implContent, GenerateGetOwnPropertyDescriptorBody($dataNode, $interfaceName, $className, $implClassName, $numAttributes > 0, 0)); - push(@implContent, "}\n\n"); - } - - if (($dataNode->extendedAttributes->{"HasIndexGetter"} || $dataNode->extendedAttributes->{"HasCustomIndexGetter"} || $dataNode->extendedAttributes->{"HasNumericIndexGetter"}) - && !$dataNode->extendedAttributes->{"HasOverridingNameGetter"}) { - push(@implContent, "bool ${className}::getOwnPropertySlot(ExecState* exec, unsigned propertyName, PropertySlot& slot)\n"); - push(@implContent, "{\n"); - push(@implContent, " if (propertyName < static_cast<$implClassName*>(impl())->length()) {\n"); - if ($dataNode->extendedAttributes->{"HasCustomIndexGetter"} || $dataNode->extendedAttributes->{"HasNumericIndexGetter"}) { - push(@implContent, " slot.setValue(getByIndex(exec, propertyName));\n"); - } else { - push(@implContent, " slot.setCustomIndex(this, propertyName, indexGetter);\n"); - } - push(@implContent, " return true;\n"); - push(@implContent, " }\n"); - push(@implContent, " return getOwnPropertySlot(exec, Identifier::from(exec, propertyName), slot);\n"); - push(@implContent, "}\n\n"); - } - - if ($numAttributes > 0) { - foreach my $attribute (@{$dataNode->attributes}) { - my $name = $attribute->signature->name; - my $type = $codeGenerator->StripModule($attribute->signature->type); - my $getFunctionName = "js" . $interfaceName . $codeGenerator->WK_ucfirst($attribute->signature->name) . ($attribute->signature->type =~ /Constructor$/ ? "Constructor" : ""); - my $implGetterFunctionName = $codeGenerator->WK_lcfirst($name); - - my $attributeConditionalString = GenerateConditionalString($attribute->signature); - push(@implContent, "#if ${attributeConditionalString}\n") if $attributeConditionalString; - - push(@implContent, "JSValue ${getFunctionName}(ExecState* exec, JSValue slotBase, const Identifier&)\n"); - push(@implContent, "{\n"); - push(@implContent, " ${className}* castedThis = static_cast<$className*>(asObject(slotBase));\n"); - - if ($dataNode->extendedAttributes->{"CheckDomainSecurity"} && - !$attribute->signature->extendedAttributes->{"DoNotCheckDomainSecurity"} && - !$attribute->signature->extendedAttributes->{"DoNotCheckDomainSecurityOnGet"}) { - push(@implContent, " if (!castedThis->allowsAccessFrom(exec))\n"); - push(@implContent, " return jsUndefined();\n"); - } - - if ($attribute->signature->extendedAttributes->{"Custom"} || $attribute->signature->extendedAttributes->{"JSCCustom"} || $attribute->signature->extendedAttributes->{"CustomGetter"} || $attribute->signature->extendedAttributes->{"JSCCustomGetter"}) { - push(@implContent, " return castedThis->$implGetterFunctionName(exec);\n"); - } elsif ($attribute->signature->extendedAttributes->{"CheckNodeSecurity"}) { - $implIncludes{"JSDOMBinding.h"} = 1; - push(@implContent, " $implClassName* imp = static_cast<$implClassName*>(castedThis->impl());\n"); - push(@implContent, " return checkNodeSecurity(exec, imp->$implGetterFunctionName()) ? " . NativeToJSValue($attribute->signature, 0, $implClassName, "imp->$implGetterFunctionName()", "castedThis") . " : jsUndefined();\n"); - } elsif ($attribute->signature->extendedAttributes->{"CheckFrameSecurity"}) { - $implIncludes{"Document.h"} = 1; - $implIncludes{"JSDOMBinding.h"} = 1; - push(@implContent, " $implClassName* imp = static_cast<$implClassName*>(castedThis->impl());\n"); - push(@implContent, " return checkNodeSecurity(exec, imp->contentDocument()) ? " . NativeToJSValue($attribute->signature, 0, $implClassName, "imp->$implGetterFunctionName()", "castedThis") . " : jsUndefined();\n"); - } elsif ($type eq "EventListener") { - $implIncludes{"EventListener.h"} = 1; - push(@implContent, " UNUSED_PARAM(exec);\n"); - push(@implContent, " $implClassName* imp = static_cast<$implClassName*>(castedThis->impl());\n"); - push(@implContent, " if (EventListener* listener = imp->$implGetterFunctionName()) {\n"); - push(@implContent, " if (const JSEventListener* jsListener = JSEventListener::cast(listener)) {\n"); - if ($implClassName eq "Document" || $implClassName eq "WorkerContext" || $implClassName eq "SharedWorkerContext" || $implClassName eq "DedicatedWorkerContext") { - push(@implContent, " if (JSObject* jsFunction = jsListener->jsFunction(imp))\n"); - } else { - push(@implContent, " if (JSObject* jsFunction = jsListener->jsFunction(imp->scriptExecutionContext()))\n"); - } - push(@implContent, " return jsFunction;\n"); - push(@implContent, " }\n"); - push(@implContent, " }\n"); - push(@implContent, " return jsNull();\n"); - } elsif ($attribute->signature->type =~ /Constructor$/) { - my $constructorType = $codeGenerator->StripModule($attribute->signature->type); - $constructorType =~ s/Constructor$//; - # Constructor attribute is only used by DOMWindow.idl, so it's correct to pass castedThis as the global object - # Once DOMObjects have a back-pointer to the globalObject we can pass castedThis->globalObject() - push(@implContent, " return JS" . $constructorType . "::getConstructor(exec, castedThis);\n"); - } elsif (!@{$attribute->getterExceptions}) { - push(@implContent, " UNUSED_PARAM(exec);\n"); - my $cacheIndex = 0; - if ($attribute->signature->extendedAttributes->{"CachedAttribute"}) { - $cacheIndex = $currentCachedAttribute; - $currentCachedAttribute++; - push(@implContent, " if (JSValue cachedValue = castedThis->getAnonymousValue(" . $className . "::" . $attribute->signature->name . "Slot))\n"); - push(@implContent, " return cachedValue;\n"); - } - - if ($svgListPropertyType) { - push(@implContent, " JSValue result = " . NativeToJSValue($attribute->signature, 0, $implClassName, "castedThis->impl()->$implGetterFunctionName()", "castedThis") . ";\n"); - } elsif ($svgPropertyOrListPropertyType) { - push(@implContent, " $svgPropertyOrListPropertyType& imp = castedThis->impl()->propertyReference();\n"); - if ($svgPropertyOrListPropertyType eq "float") { # Special case for JSSVGNumber - push(@implContent, " JSValue result = " . NativeToJSValue($attribute->signature, 0, $implClassName, "imp", "castedThis") . ";\n"); - } else { - push(@implContent, " JSValue result = " . NativeToJSValue($attribute->signature, 0, $implClassName, "imp.$implGetterFunctionName()", "castedThis") . ";\n"); - } - } else { - my $getterExpression = "imp->" . $codeGenerator->GetterExpressionPrefix(\%implIncludes, $interfaceName, $attribute) . ")"; - my $jsType = NativeToJSValue($attribute->signature, 0, $implClassName, $getterExpression, "castedThis"); - push(@implContent, " $implClassName* imp = static_cast<$implClassName*>(castedThis->impl());\n"); - if ($codeGenerator->IsSVGAnimatedType($type)) { - push(@implContent, " RefPtr<$type> obj = $jsType;\n"); - push(@implContent, " JSValue result = toJS(exec, castedThis->globalObject(), obj.get());\n"); - } else { - push(@implContent, " JSValue result = $jsType;\n"); - } - } - - push(@implContent, " castedThis->putAnonymousValue(" . $className . "::" . $attribute->signature->name . "Slot, result);\n") if ($attribute->signature->extendedAttributes->{"CachedAttribute"}); - push(@implContent, " return result;\n"); - - } else { - push(@implContent, " ExceptionCode ec = 0;\n"); - if ($svgPropertyOrListPropertyType) { - push(@implContent, " $svgPropertyOrListPropertyType imp(*castedThis->impl());\n"); - push(@implContent, " JSC::JSValue result = " . NativeToJSValue($attribute->signature, 0, $implClassName, "imp.$implGetterFunctionName(ec)", "castedThis") . ";\n"); - } else { - push(@implContent, " $implClassName* imp = static_cast<$implClassName*>(castedThis->impl());\n"); - push(@implContent, " JSC::JSValue result = " . NativeToJSValue($attribute->signature, 0, $implClassName, "imp->$implGetterFunctionName(ec)", "castedThis") . ";\n"); - } - - push(@implContent, " setDOMException(exec, ec);\n"); - push(@implContent, " return result;\n"); - } - - push(@implContent, "}\n"); - - push(@implContent, "#endif\n") if $attributeConditionalString; - - push(@implContent, "\n"); - } - - if (!($dataNode->extendedAttributes->{"OmitConstructor"} || $dataNode->extendedAttributes->{"CustomConstructor"})) { - my $constructorFunctionName = "js" . $interfaceName . "Constructor"; - - push(@implContent, "JSValue ${constructorFunctionName}(ExecState* exec, JSValue slotBase, const Identifier&)\n"); - push(@implContent, "{\n"); - push(@implContent, " ${className}* domObject = static_cast<$className*>(asObject(slotBase));\n"); - - if ($dataNode->extendedAttributes->{"CheckDomainSecurity"}) { - push(@implContent, " if (!domObject->allowsAccessFrom(exec))\n"); - push(@implContent, " return jsUndefined();\n"); - } - - push(@implContent, " return ${className}::getConstructor(exec, domObject->globalObject());\n"); - push(@implContent, "}\n"); - } - } - - # Check if we have any writable attributes - my $hasReadWriteProperties = 0; - foreach my $attribute (@{$dataNode->attributes}) { - $hasReadWriteProperties = 1 if $attribute->type !~ /^readonly/; - } - - my $hasSetter = $hasReadWriteProperties - || $dataNode->extendedAttributes->{"DelegatingPutFunction"} - || $dataNode->extendedAttributes->{"HasCustomIndexSetter"}; - - if ($hasSetter) { - if (!$dataNode->extendedAttributes->{"CustomPutFunction"}) { - push(@implContent, "void ${className}::put(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)\n"); - push(@implContent, "{\n"); - if ($dataNode->extendedAttributes->{"HasCustomIndexSetter"}) { - push(@implContent, " bool ok;\n"); - push(@implContent, " unsigned index = propertyName.toUInt32(ok);\n"); - push(@implContent, " if (ok) {\n"); - push(@implContent, " indexSetter(exec, index, value);\n"); - push(@implContent, " return;\n"); - push(@implContent, " }\n"); - } - if ($dataNode->extendedAttributes->{"DelegatingPutFunction"}) { - push(@implContent, " if (putDelegate(exec, propertyName, value, slot))\n"); - push(@implContent, " return;\n"); - } - - if ($hasReadWriteProperties) { - push(@implContent, " lookupPut<$className, Base>(exec, propertyName, value, " . hashTableAccessor($dataNode->extendedAttributes->{"NoStaticTables"}, $className) . ", this, slot);\n"); - } else { - push(@implContent, " Base::put(exec, propertyName, value, slot);\n"); - } - push(@implContent, "}\n\n"); - } - - if ($dataNode->extendedAttributes->{"HasCustomIndexSetter"}) { - push(@implContent, "void ${className}::put(ExecState* exec, unsigned propertyName, JSValue value)\n"); - push(@implContent, "{\n"); - push(@implContent, " indexSetter(exec, propertyName, value);\n"); - push(@implContent, " return;\n"); - push(@implContent, "}\n\n"); - } - - if ($hasReadWriteProperties) { - foreach my $attribute (@{$dataNode->attributes}) { - if ($attribute->type !~ /^readonly/) { - my $name = $attribute->signature->name; - my $type = $codeGenerator->StripModule($attribute->signature->type); - my $putFunctionName = "setJS" . $interfaceName . $codeGenerator->WK_ucfirst($name) . ($attribute->signature->type =~ /Constructor$/ ? "Constructor" : ""); - my $implSetterFunctionName = $codeGenerator->WK_ucfirst($name); - - my $attributeConditionalString = GenerateConditionalString($attribute->signature); - push(@implContent, "#if ${attributeConditionalString}\n") if $attributeConditionalString; - - push(@implContent, "void ${putFunctionName}(ExecState* exec, JSObject* thisObject, JSValue value)\n"); - push(@implContent, "{\n"); - - if ($dataNode->extendedAttributes->{"CheckDomainSecurity"} && !$attribute->signature->extendedAttributes->{"DoNotCheckDomainSecurity"}) { - if ($interfaceName eq "DOMWindow") { - push(@implContent, " if (!static_cast<$className*>(thisObject)->allowsAccessFrom(exec))\n"); - } else { - push(@implContent, " if (!allowsAccessFromFrame(exec, static_cast<$className*>(thisObject)->impl()->frame()))\n"); - } - push(@implContent, " return;\n"); - } - - if ($attribute->signature->extendedAttributes->{"Custom"} || $attribute->signature->extendedAttributes->{"JSCCustom"} || $attribute->signature->extendedAttributes->{"CustomSetter"} || $attribute->signature->extendedAttributes->{"JSCCustomSetter"}) { - push(@implContent, " static_cast<$className*>(thisObject)->set$implSetterFunctionName(exec, value);\n"); - } elsif ($type eq "EventListener") { - $implIncludes{"JSEventListener.h"} = 1; - push(@implContent, " UNUSED_PARAM(exec);\n"); - my $windowEventListener = $attribute->signature->extendedAttributes->{"WindowEventListener"}; - if ($windowEventListener) { - push(@implContent, " ${className}* castedThis = static_cast<${className}*>(thisObject);\n"); - push(@implContent, " JSDOMGlobalObject* globalObject = castedThis->globalObject();\n"); - } - push(@implContent, " $implClassName* imp = static_cast<$implClassName*>(static_cast<$className*>(thisObject)->impl());\n"); - if ($interfaceName eq "WorkerContext" and $name eq "onerror") { - $implIncludes{"JSWorkerContextErrorHandler.h"} = 1; - push(@implContent, " imp->set$implSetterFunctionName(createJSWorkerContextErrorHandler(exec, value, thisObject));\n"); - } else { - push(@implContent, GenerateAttributeEventListenerCall($className, $implSetterFunctionName, $windowEventListener)); - } - } elsif ($attribute->signature->type =~ /Constructor$/) { - my $constructorType = $attribute->signature->type; - $constructorType =~ s/Constructor$//; - if ($constructorType ne "DOMObject") { - $implIncludes{"JS" . $constructorType . ".h"} = 1; - } - push(@implContent, " // Shadowing a built-in constructor\n"); - push(@implContent, " static_cast<$className*>(thisObject)->putDirect(Identifier(exec, \"$name\"), value);\n"); - } elsif ($attribute->signature->extendedAttributes->{"Replaceable"}) { - push(@implContent, " // Shadowing a built-in object\n"); - push(@implContent, " static_cast<$className*>(thisObject)->putDirect(Identifier(exec, \"$name\"), value);\n"); - } else { - push(@implContent, " $className* castedThis = static_cast<$className*>(thisObject);\n"); - push(@implContent, " $implType* imp = static_cast<$implType*>(castedThis->impl());\n"); - push(@implContent, " ExceptionCode ec = 0;\n") if @{$attribute->setterExceptions}; - - # If the "StrictTypeChecking" extended attribute is present, and the attribute's type is an - # interface type, then if the incoming value does not implement that interface, a TypeError - # is thrown rather than silently passing NULL to the C++ code. - # Per the Web IDL and ECMAScript specifications, incoming values can always be converted to - # both strings and numbers, so do not throw TypeError if the attribute is of these types. - if ($attribute->signature->extendedAttributes->{"StrictTypeChecking"}) { - $implIncludes{"<runtime/Error.h>"} = 1; - - my $argType = $attribute->signature->type; - if (!IsNativeType($argType)) { - push(@implContent, " if (!value.isUndefinedOrNull() && !value.inherits(&JS${argType}::s_info)) {\n"); - push(@implContent, " throwVMTypeError(exec);\n"); - push(@implContent, " return;\n"); - push(@implContent, " };\n"); - } - } - - my $nativeValue = JSValueToNative($attribute->signature, "value"); - if ($svgPropertyOrListPropertyType) { - if ($svgPropertyType) { - push(@implContent, " if (imp->role() == AnimValRole) {\n"); - push(@implContent, " setDOMException(exec, NO_MODIFICATION_ALLOWED_ERR);\n"); - push(@implContent, " return;\n"); - push(@implContent, " }\n"); - } - push(@implContent, " $svgPropertyOrListPropertyType& podImp = imp->propertyReference();\n"); - if ($svgPropertyOrListPropertyType eq "float") { # Special case for JSSVGNumber - push(@implContent, " podImp = $nativeValue;\n"); - } else { - push(@implContent, " podImp.set$implSetterFunctionName($nativeValue"); - push(@implContent, ", ec") if @{$attribute->setterExceptions}; - push(@implContent, ");\n"); - push(@implContent, " setDOMException(exec, ec);\n") if @{$attribute->setterExceptions}; - } - if ($svgPropertyType) { - if (@{$attribute->setterExceptions}) { - push(@implContent, " if (!ec)\n"); - push(@implContent, " imp->commitChange();\n"); - } else { - push(@implContent, " imp->commitChange();\n"); - } - } - } else { - my $setterExpressionPrefix = $codeGenerator->SetterExpressionPrefix(\%implIncludes, $interfaceName, $attribute); - push(@implContent, " imp->$setterExpressionPrefix$nativeValue"); - push(@implContent, ", ec") if @{$attribute->setterExceptions}; - push(@implContent, ");\n"); - push(@implContent, " setDOMException(exec, ec);\n") if @{$attribute->setterExceptions}; - } - } - - push(@implContent, "}\n"); - - push(@implContent, "#endif\n") if $attributeConditionalString; - - push(@implContent, "\n"); - } - } - } - } - } - - if (($dataNode->extendedAttributes->{"HasIndexGetter"} || $dataNode->extendedAttributes->{"HasCustomIndexGetter"} || $dataNode->extendedAttributes->{"HasNumericIndexGetter"}) && !$dataNode->extendedAttributes->{"CustomGetPropertyNames"}) { - push(@implContent, "void ${className}::getOwnPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode)\n"); - push(@implContent, "{\n"); - if ($dataNode->extendedAttributes->{"HasIndexGetter"} || $dataNode->extendedAttributes->{"HasCustomIndexGetter"} || $dataNode->extendedAttributes->{"HasNumericIndexGetter"}) { - push(@implContent, " for (unsigned i = 0; i < static_cast<${implClassName}*>(impl())->length(); ++i)\n"); - push(@implContent, " propertyNames.add(Identifier::from(exec, i));\n"); - } - push(@implContent, " Base::getOwnPropertyNames(exec, propertyNames, mode);\n"); - push(@implContent, "}\n\n"); - } - - if (!($dataNode->extendedAttributes->{"OmitConstructor"} || $dataNode->extendedAttributes->{"CustomConstructor"})) { - push(@implContent, "JSValue ${className}::getConstructor(ExecState* exec, JSGlobalObject* globalObject)\n{\n"); - push(@implContent, " return getDOMConstructor<${className}Constructor>(exec, static_cast<JSDOMGlobalObject*>(globalObject));\n"); - push(@implContent, "}\n\n"); - } - - # Functions - if ($numFunctions > 0) { - foreach my $function (@{$dataNode->functions}) { - AddIncludesForType($function->signature->type); - - my $functionName = $codeGenerator->WK_lcfirst($className) . "PrototypeFunction" . $codeGenerator->WK_ucfirst($function->signature->name); - - if ($function->{overloads} && @{$function->{overloads}} > 1) { - # Append a number to an overloaded method's name to make it unique: - $functionName = $functionName . $function->{overloadIndex}; - # Make this function static to avoid compiler warnings, since we - # don't generate a prototype for it in the header. - push(@implContent, "static "); - } - - my $functionImplementationName = $function->signature->extendedAttributes->{"ImplementationFunction"} || $codeGenerator->WK_lcfirst($function->signature->name); - - push(@implContent, "EncodedJSValue JSC_HOST_CALL ${functionName}(ExecState* exec)\n"); - push(@implContent, "{\n"); - - $implIncludes{"<runtime/Error.h>"} = 1; - - if ($interfaceName eq "DOMWindow") { - push(@implContent, " $className* castedThis = toJSDOMWindow(exec->hostThisValue().toThisObject(exec));\n"); - push(@implContent, " if (!castedThis)\n"); - push(@implContent, " return throwVMTypeError(exec);\n"); - } elsif ($dataNode->extendedAttributes->{"IsWorkerContext"}) { - push(@implContent, " $className* castedThis = to${className}(exec->hostThisValue().toThisObject(exec));\n"); - push(@implContent, " if (!castedThis)\n"); - push(@implContent, " return throwVMTypeError(exec);\n"); - } else { - push(@implContent, " JSValue thisValue = exec->hostThisValue();\n"); - push(@implContent, " if (!thisValue.inherits(&${className}::s_info))\n"); - push(@implContent, " return throwVMTypeError(exec);\n"); - push(@implContent, " $className* castedThis = static_cast<$className*>(asObject(thisValue));\n"); - } - - if ($dataNode->extendedAttributes->{"CheckDomainSecurity"} && - !$function->signature->extendedAttributes->{"DoNotCheckDomainSecurity"}) { - push(@implContent, " if (!castedThis->allowsAccessFrom(exec))\n"); - push(@implContent, " return JSValue::encode(jsUndefined());\n"); - } - - if ($function->signature->extendedAttributes->{"Custom"} || $function->signature->extendedAttributes->{"JSCCustom"}) { - push(@implContent, " return JSValue::encode(castedThis->" . $functionImplementationName . "(exec));\n"); - } else { - push(@implContent, " $implType* imp = static_cast<$implType*>(castedThis->impl());\n"); - if ($svgPropertyType) { - push(@implContent, " if (imp->role() == AnimValRole) {\n"); - push(@implContent, " setDOMException(exec, NO_MODIFICATION_ALLOWED_ERR);\n"); - push(@implContent, " return JSValue::encode(jsUndefined());\n"); - push(@implContent, " }\n"); - push(@implContent, " $svgPropertyType& podImp = imp->propertyReference();\n"); - } - - my $numParameters = @{$function->parameters}; - - my $requiresAllArguments = $function->signature->extendedAttributes->{"RequiresAllArguments"}; - if ($requiresAllArguments) { - my $numMandatoryParams = @{$function->parameters}; - foreach my $param (reverse(@{$function->parameters})) { - if ($param->extendedAttributes->{"Optional"}) { - $numMandatoryParams--; - } else { - last; - } - } - push(@implContent, " if (exec->argumentCount() < $numMandatoryParams)\n"); - if ($requiresAllArguments eq "Raise") { - push(@implContent, " return throwVMError(exec, createSyntaxError(exec, \"Not enough arguments\"));\n"); - } else { - push(@implContent, " return JSValue::encode(jsUndefined());\n"); - } - } - - if (@{$function->raisesExceptions}) { - push(@implContent, " ExceptionCode ec = 0;\n"); - } - - if ($function->signature->extendedAttributes->{"SVGCheckSecurityDocument"}) { - push(@implContent, " if (!checkNodeSecurity(exec, imp->getSVGDocument(" . (@{$function->raisesExceptions} ? "ec" : "") .")))\n"); - push(@implContent, " return JSValue::encode(jsUndefined());\n"); - $implIncludes{"JSDOMBinding.h"} = 1; - } - - if ($function->signature->name eq "addEventListener") { - push(@implContent, GenerateEventListenerCall($className, "add")); - } elsif ($function->signature->name eq "removeEventListener") { - push(@implContent, GenerateEventListenerCall($className, "remove")); - } else { - my $argsIndex = 0; - my $paramIndex = 0; - my $functionString = (($svgPropertyOrListPropertyType and !$svgListPropertyType) ? "podImp." : "imp->") . $functionImplementationName . "("; - my $hasOptionalArguments = 0; - - if ($function->signature->extendedAttributes->{"CustomArgumentHandling"}) { - push(@implContent, " RefPtr<ScriptArguments> scriptArguments(createScriptArguments(exec, $numParameters));\n"); - push(@implContent, " size_t maxStackSize = imp->shouldCaptureFullStackTrace() ? ScriptCallStack::maxCallStackSizeToCapture : 1;\n"); - push(@implContent, " RefPtr<ScriptCallStack> callStack(createScriptCallStack(exec, maxStackSize));\n"); - $implIncludes{"ScriptArguments.h"} = 1; - $implIncludes{"ScriptCallStack.h"} = 1; - $implIncludes{"ScriptCallStackFactory.h"} = 1; - } - - my $callWith = $function->signature->extendedAttributes->{"CallWith"}; - if ($callWith) { - my $callWithArg = "COMPILE_ASSERT(false)"; - if ($callWith eq "DynamicFrame") { - push(@implContent, " Frame* dynamicFrame = toDynamicFrame(exec);\n"); - push(@implContent, " if (!dynamicFrame)\n"); - push(@implContent, " return JSValue::encode(jsUndefined());\n"); - $callWithArg = "dynamicFrame"; - } elsif ($callWith eq "ScriptState") { - $callWithArg = "exec"; - } elsif ($callWith eq "ScriptExecutionContext") { - push(@implContent, " ScriptExecutionContext* scriptContext = static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject())->scriptExecutionContext();\n"); - push(@implContent, " if (!scriptContext)\n"); - push(@implContent, " return JSValue::encode(jsUndefined());\n"); - $callWithArg = "scriptContext"; - } - $functionString .= ", " if $paramIndex; - $functionString .= $callWithArg; - $paramIndex++; - } - - $implIncludes{"ExceptionCode.h"} = 1; - $implIncludes{"JSDOMBinding.h"} = 1; - foreach my $parameter (@{$function->parameters}) { - # Optional callbacks should be treated differently, because they always have a default value (0), - # and we can reduce the number of overloaded functions that take a different number of parameters. - if ($parameter->extendedAttributes->{"Optional"} && !$parameter->extendedAttributes->{"Callback"}) { - # Generate early call if there are enough parameters. - if (!$hasOptionalArguments) { - push(@implContent, "\n int argsCount = exec->argumentCount();\n"); - $hasOptionalArguments = 1; - } - push(@implContent, " if (argsCount <= $argsIndex) {\n"); - GenerateImplementationFunctionCall($function, $functionString, $paramIndex, " " x 2, $svgPropertyType, $implClassName); - push(@implContent, " }\n\n"); - } - - my $name = $parameter->name; - my $argType = $codeGenerator->StripModule($parameter->type); - - if ($argType eq "XPathNSResolver") { - push(@implContent, " RefPtr<XPathNSResolver> customResolver;\n"); - push(@implContent, " XPathNSResolver* resolver = toXPathNSResolver(exec->argument($argsIndex));\n"); - push(@implContent, " if (!resolver) {\n"); - push(@implContent, " customResolver = JSCustomXPathNSResolver::create(exec, exec->argument($argsIndex));\n"); - push(@implContent, " if (exec->hadException())\n"); - push(@implContent, " return JSValue::encode(jsUndefined());\n"); - push(@implContent, " resolver = customResolver.get();\n"); - push(@implContent, " }\n"); - } elsif ($parameter->extendedAttributes->{"Callback"}) { - my $callbackClassName = GetCallbackClassName($argType); - $implIncludes{"$callbackClassName.h"} = 1; - if ($parameter->extendedAttributes->{"Optional"}) { - push(@implContent, " RefPtr<$argType> $name;\n"); - push(@implContent, " if (exec->argumentCount() > $argsIndex && !exec->argument($argsIndex).isNull() && !exec->argument($argsIndex).isUndefined()) {\n"); - push(@implContent, " if (!exec->argument($argsIndex).isObject()) {\n"); - push(@implContent, " setDOMException(exec, TYPE_MISMATCH_ERR);\n"); - push(@implContent, " return JSValue::encode(jsUndefined());\n"); - push(@implContent, " }\n"); - push(@implContent, " $name = ${callbackClassName}::create(asObject(exec->argument($argsIndex)), castedThis->globalObject());\n"); - push(@implContent, " }\n"); - } else { - push(@implContent, " if (exec->argumentCount() <= $argsIndex || !exec->argument($argsIndex).isObject()) {\n"); - push(@implContent, " setDOMException(exec, TYPE_MISMATCH_ERR);\n"); - push(@implContent, " return JSValue::encode(jsUndefined());\n"); - push(@implContent, " }\n"); - push(@implContent, " RefPtr<$argType> $name = ${callbackClassName}::create(asObject(exec->argument($argsIndex)), castedThis->globalObject());\n"); - } - } else { - # If the "StrictTypeChecking" extended attribute is present, and the argument's type is an - # interface type, then if the incoming value does not implement that interface, a TypeError - # is thrown rather than silently passing NULL to the C++ code. - # Per the Web IDL and ECMAScript semantics, incoming values can always be converted to both - # strings and numbers, so do not throw TypeError if the argument is of these types. - if ($function->signature->extendedAttributes->{"StrictTypeChecking"}) { - $implIncludes{"<runtime/Error.h>"} = 1; - - my $argValue = "exec->argument($argsIndex)"; - if (!IsNativeType($argType)) { - push(@implContent, " if (exec->argumentCount() > $argsIndex && !${argValue}.isUndefinedOrNull() && !${argValue}.inherits(&JS${argType}::s_info))\n"); - push(@implContent, " return throwVMTypeError(exec);\n"); - } - } - - push(@implContent, " " . GetNativeTypeFromSignature($parameter) . " $name = " . JSValueToNative($parameter, "exec->argument($argsIndex)") . ";\n"); - - # If a parameter is "an index" and it's negative it should throw an INDEX_SIZE_ERR exception. - # But this needs to be done in the bindings, because the type is unsigned and the fact that it - # was negative will be lost by the time we're inside the DOM. - if ($parameter->extendedAttributes->{"IsIndex"}) { - push(@implContent, " if ($name < 0) {\n"); - push(@implContent, " setDOMException(exec, INDEX_SIZE_ERR);\n"); - push(@implContent, " return JSValue::encode(jsUndefined());\n"); - push(@implContent, " }\n"); - } - - # Check if the type conversion succeeded. - push(@implContent, " if (exec->hadException())\n"); - push(@implContent, " return JSValue::encode(jsUndefined());\n"); - - if ($codeGenerator->IsSVGTypeNeedingTearOff($argType) and not $implClassName =~ /List$/) { - push(@implContent, " if (!$name) {\n"); - push(@implContent, " setDOMException(exec, TYPE_MISMATCH_ERR);\n"); - push(@implContent, " return JSValue::encode(jsUndefined());\n"); - push(@implContent, " }\n"); - } - } - - $functionString .= ", " if $paramIndex; - - if ($argType eq "NodeFilter") { - $functionString .= "$name.get()"; - } elsif ($codeGenerator->IsSVGTypeNeedingTearOff($argType) and not $implClassName =~ /List$/) { - $functionString .= "$name->propertyReference()"; - } else { - $functionString .= $name; - } - $argsIndex++; - $paramIndex++; - } - - if ($function->signature->extendedAttributes->{"NeedsUserGestureCheck"}) { - $functionString .= ", " if $paramIndex; - $functionString .= "processingUserGesture()"; - $paramIndex++; - } - - push(@implContent, "\n"); - GenerateImplementationFunctionCall($function, $functionString, $paramIndex, " ", $svgPropertyType, $implClassName); - } - } - push(@implContent, "}\n\n"); - - if ($function->{overloads} && @{$function->{overloads}} > 1 && $function->{overloadIndex} == @{$function->{overloads}}) { - # Generate a function dispatching call to the rest of the overloads. - GenerateOverloadedPrototypeFunction($function, $dataNode, $implClassName); - } - } - } - - if ($numConstants > 0) { - push(@implContent, "// Constant getters\n\n"); - - foreach my $constant (@{$dataNode->constants}) { - my $getter = "js" . $interfaceName . $codeGenerator->WK_ucfirst($constant->name); - - # FIXME: this casts into int to match our previous behavior which turned 0xFFFFFFFF in -1 for NodeFilter.SHOW_ALL - push(@implContent, "JSValue ${getter}(ExecState* exec, JSValue, const Identifier&)\n"); - push(@implContent, "{\n"); - if ($constant->type eq "DOMString") { - push(@implContent, " return jsStringOrNull(exec, String(" . $constant->value . "));\n"); - } else { - push(@implContent, " UNUSED_PARAM(exec);\n"); - push(@implContent, " return jsNumber(static_cast<int>(" . $constant->value . "));\n"); - } - push(@implContent, "}\n\n"); - } - } - - if ($dataNode->extendedAttributes->{"HasIndexGetter"}) { - push(@implContent, "\nJSValue ${className}::indexGetter(ExecState* exec, JSValue slotBase, unsigned index)\n"); - push(@implContent, "{\n"); - push(@implContent, " ${className}* thisObj = static_cast<$className*>(asObject(slotBase));\n"); - if (IndexGetterReturnsStrings($implClassName)) { - $implIncludes{"KURL.h"} = 1; - push(@implContent, " return jsStringOrNull(exec, thisObj->impl()->item(index));\n"); - } else { - push(@implContent, " return toJS(exec, thisObj->globalObject(), static_cast<$implClassName*>(thisObj->impl())->item(index));\n"); - } - push(@implContent, "}\n"); - if ($interfaceName eq "HTMLCollection" or $interfaceName eq "HTMLAllCollection") { - $implIncludes{"JSNode.h"} = 1; - $implIncludes{"Node.h"} = 1; - } - } - - if ($dataNode->extendedAttributes->{"HasNumericIndexGetter"}) { - push(@implContent, "\nJSValue ${className}::getByIndex(ExecState*, unsigned index)\n"); - push(@implContent, "{\n"); - push(@implContent, " return jsNumber(static_cast<$implClassName*>(impl())->item(index));\n"); - push(@implContent, "}\n"); - if ($interfaceName eq "HTMLCollection" or $interfaceName eq "HTMLAllCollection") { - $implIncludes{"JSNode.h"} = 1; - $implIncludes{"Node.h"} = 1; - } - } - - if ((!$hasParent or $dataNode->extendedAttributes->{"GenerateToJS"}) and !$dataNode->extendedAttributes->{"CustomToJS"}) { - if ($svgPropertyType) { - push(@implContent, "JSC::JSValue toJS(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, $implType* object)\n"); - } else { - push(@implContent, "JSC::JSValue toJS(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, $implType* object)\n"); - } - push(@implContent, "{\n"); - if ($svgPropertyType) { - push(@implContent, " return getDOMObjectWrapper<$className, $implType>(exec, globalObject, object);\n"); - } else { - push(@implContent, " return getDOMObjectWrapper<$className>(exec, globalObject, object);\n"); - } - push(@implContent, "}\n"); - } - - if ((!$hasParent or $dataNode->extendedAttributes->{"GenerateNativeConverter"}) and !$dataNode->extendedAttributes->{"CustomNativeConverter"}) { - push(@implContent, "$implType* to${interfaceName}(JSC::JSValue value)\n"); - push(@implContent, "{\n"); - push(@implContent, " return value.inherits(&${className}::s_info) ? static_cast<$className*>(asObject(value))->impl() : 0"); - push(@implContent, ";\n}\n"); - } - - push(@implContent, "\n}\n"); - - my $conditionalString = GenerateConditionalString($dataNode); - push(@implContent, "\n#endif // ${conditionalString}\n") if $conditionalString; -} - -sub GenerateCallbackHeader -{ - my $object = shift; - my $dataNode = shift; - - my $interfaceName = $dataNode->name; - my $className = "JS$interfaceName"; - - # - Add default header template and header protection - push(@headerContentHeader, GenerateHeaderContentHeader($dataNode)); - - $headerIncludes{"ActiveDOMCallback.h"} = 1; - $headerIncludes{"$interfaceName.h"} = 1; - $headerIncludes{"JSCallbackData.h"} = 1; - $headerIncludes{"<wtf/Forward.h>"} = 1; - - push(@headerContent, "\nnamespace WebCore {\n\n"); - push(@headerContent, "class $className : public $interfaceName, public ActiveDOMCallback {\n"); - push(@headerContent, "public:\n"); - - # The static create() method. - push(@headerContent, " static PassRefPtr<$className> create(JSC::JSObject* callback, JSDOMGlobalObject* globalObject)\n"); - push(@headerContent, " {\n"); - push(@headerContent, " return adoptRef(new $className(callback, globalObject));\n"); - push(@headerContent, " }\n\n"); - - # Destructor - push(@headerContent, " virtual ~$className();\n"); - - # Functions - my $numFunctions = @{$dataNode->functions}; - if ($numFunctions > 0) { - push(@headerContent, "\n // Functions\n"); - foreach my $function (@{$dataNode->functions}) { - my @params = @{$function->parameters}; - if (!$function->signature->extendedAttributes->{"Custom"} && - !(GetNativeType($function->signature->type) eq "bool")) { - push(@headerContent, " COMPILE_ASSERT(false)"); - } - - push(@headerContent, " virtual " . GetNativeType($function->signature->type) . " " . $function->signature->name . "("); - - my @args = (); - foreach my $param (@params) { - push(@args, GetNativeType($param->type) . " " . $param->name); - } - push(@headerContent, join(", ", @args)); - - push(@headerContent, ");\n"); - } - } - - push(@headerContent, "\nprivate:\n"); - - # Constructor - push(@headerContent, " $className(JSC::JSObject* callback, JSDOMGlobalObject*);\n\n"); - - # Private members - push(@headerContent, " JSCallbackData* m_data;\n"); - push(@headerContent, "};\n\n"); - - push(@headerContent, "} // namespace WebCore\n\n"); - my $conditionalString = GenerateConditionalString($dataNode); - push(@headerContent, "#endif // ${conditionalString}\n\n") if $conditionalString; - push(@headerContent, "#endif\n"); -} - -sub GenerateCallbackImplementation -{ - my ($object, $dataNode) = @_; - - my $interfaceName = $dataNode->name; - my $className = "JS$interfaceName"; - - # - Add default header template - push(@implContentHeader, GenerateImplementationContentHeader($dataNode)); - - $implIncludes{"ScriptExecutionContext.h"} = 1; - $implIncludes{"<runtime/JSLock.h>"} = 1; - $implIncludes{"<wtf/MainThread.h>"} = 1; - - @implContent = (); - - push(@implContent, "\nusing namespace JSC;\n\n"); - push(@implContent, "namespace WebCore {\n\n"); - - # Constructor - push(@implContent, "${className}::${className}(JSObject* callback, JSDOMGlobalObject* globalObject)\n"); - push(@implContent, " : ActiveDOMCallback(globalObject->scriptExecutionContext())\n"); - push(@implContent, " , m_data(new JSCallbackData(callback, globalObject))\n"); - push(@implContent, "{\n"); - push(@implContent, "}\n\n"); - - # Destructor - push(@implContent, "${className}::~${className}()\n"); - push(@implContent, "{\n"); - push(@implContent, " ScriptExecutionContext* context = scriptExecutionContext();\n"); - push(@implContent, " // When the context is destroyed, all tasks with a reference to a callback\n"); - push(@implContent, " // should be deleted. So if the context is 0, we are on the context thread.\n"); - push(@implContent, " if (!context || context->isContextThread())\n"); - push(@implContent, " delete m_data;\n"); - push(@implContent, " else\n"); - push(@implContent, " context->postTask(DeleteCallbackDataTask::create(m_data));\n"); - push(@implContent, "#ifndef NDEBUG\n"); - push(@implContent, " m_data = 0;\n"); - push(@implContent, "#endif\n"); - push(@implContent, "}\n"); - - # Functions - my $numFunctions = @{$dataNode->functions}; - if ($numFunctions > 0) { - push(@implContent, "\n// Functions\n"); - foreach my $function (@{$dataNode->functions}) { - my @params = @{$function->parameters}; - if ($function->signature->extendedAttributes->{"Custom"} || - !(GetNativeType($function->signature->type) eq "bool")) { - next; - } - - AddIncludesForType($function->signature->type); - push(@implContent, "\n" . GetNativeType($function->signature->type) . " ${className}::" . $function->signature->name . "("); - - my @args = (); - foreach my $param (@params) { - AddIncludesForType($param->type, 1); - push(@args, GetNativeType($param->type) . " " . $param->name); - } - push(@implContent, join(", ", @args)); - push(@implContent, ")\n"); - - push(@implContent, "{\n"); - push(@implContent, " if (!canInvokeCallback())\n"); - push(@implContent, " return true;\n\n"); - push(@implContent, " RefPtr<$className> protect(this);\n\n"); - push(@implContent, " JSLock lock(SilenceAssertionsOnly);\n\n"); - push(@implContent, " ExecState* exec = m_data->globalObject()->globalExec();\n"); - push(@implContent, " MarkedArgumentBuffer args;\n"); - - foreach my $param (@params) { - my $paramName = $param->name; - if ($param->type eq "DOMString") { - push(@implContent, " args.append(jsString(exec, ${paramName}));\n"); - } else { - push(@implContent, " args.append(toJS(exec, ${paramName}));\n"); - } - } - - push(@implContent, "\n bool raisedException = false;\n"); - push(@implContent, " m_data->invokeCallback(args, &raisedException);\n"); - push(@implContent, " return !raisedException;\n"); - push(@implContent, "}\n"); - } - } - - push(@implContent, "\n}\n"); - my $conditionalString = GenerateConditionalString($dataNode); - push(@implContent, "\n#endif // ${conditionalString}\n") if $conditionalString; -} - -sub GenerateImplementationFunctionCall() -{ - my $function = shift; - my $functionString = shift; - my $paramIndex = shift; - my $indent = shift; - my $svgPropertyType = shift; - my $implClassName = shift; - - if ($function->signature->extendedAttributes->{"CustomArgumentHandling"}) { - $functionString .= ", " if $paramIndex; - $paramIndex += 2; - $functionString .= "scriptArguments, callStack"; - } - - if (@{$function->raisesExceptions}) { - $functionString .= ", " if $paramIndex; - $functionString .= "ec"; - } - $functionString .= ")"; - - if ($function->signature->type eq "void") { - push(@implContent, $indent . "$functionString;\n"); - push(@implContent, $indent . "setDOMException(exec, ec);\n") if @{$function->raisesExceptions}; - - if ($svgPropertyType) { - if (@{$function->raisesExceptions}) { - push(@implContent, $indent . "if (!ec)\n"); - push(@implContent, $indent . " imp->commitChange();\n"); - } else { - push(@implContent, $indent . "imp->commitChange();\n"); - } - } - - push(@implContent, $indent . "return JSValue::encode(jsUndefined());\n"); - } else { - push(@implContent, "\n" . $indent . "JSC::JSValue result = " . NativeToJSValue($function->signature, 1, $implClassName, $functionString, "castedThis") . ";\n"); - push(@implContent, $indent . "setDOMException(exec, ec);\n") if @{$function->raisesExceptions}; - - $callWith = $function->signature->extendedAttributes->{"CallWith"}; - if ($callWith and $callWith eq "ScriptState") { - push(@implContent, $indent . "if (exec->hadException())\n"); - push(@implContent, $indent . " return JSValue::encode(jsUndefined());\n"); - } - - push(@implContent, $indent . "return JSValue::encode(result);\n"); - } -} - -sub GetNativeTypeFromSignature -{ - my $signature = shift; - my $type = $codeGenerator->StripModule($signature->type); - - if ($type eq "unsigned long" and $signature->extendedAttributes->{"IsIndex"}) { - # Special-case index arguments because we need to check that they aren't < 0. - return "int"; - } - - return GetNativeType($type); -} - -my %nativeType = ( - "CompareHow" => "Range::CompareHow", - "DOMString" => "const String&", - "DOMObject" => "ScriptValue", - "NodeFilter" => "RefPtr<NodeFilter>", - "SerializedScriptValue" => "RefPtr<SerializedScriptValue>", - "IDBKey" => "RefPtr<IDBKey>", - "SVGPaintType" => "SVGPaint::SVGPaintType", - "boolean" => "bool", - "double" => "double", - "float" => "float", - "short" => "short", - "long" => "int", - "unsigned long" => "unsigned", - "unsigned short" => "unsigned short", - "long long" => "long long", - "unsigned long long" => "unsigned long long", - "MediaQueryListListener" => "RefPtr<MediaQueryListListener>" -); - -sub GetNativeType -{ - my $type = shift; - - my $svgNativeType = $codeGenerator->GetSVGTypeNeedingTearOff($type); - return "${svgNativeType}*" if $svgNativeType; - return $nativeType{$type} if exists $nativeType{$type}; - - # For all other types, the native type is a pointer with same type name as the IDL type. - return "${type}*"; -} - -sub GetSVGPropertyTypes -{ - my $implType = shift; - - my $svgPropertyType; - my $svgListPropertyType; - my $svgNativeType; - - return ($svgPropertyType, $svgListPropertyType, $svgNativeType) if not $implType =~ /SVG/; - - $svgNativeType = $codeGenerator->GetSVGTypeNeedingTearOff($implType); - return ($svgPropertyType, $svgListPropertyType, $svgNativeType) if not $svgNativeType; - - # Append space to avoid compilation errors when using PassRefPtr<$svgNativeType> - $svgNativeType = "$svgNativeType "; - - my $svgWrappedNativeType = $codeGenerator->GetSVGWrappedTypeNeedingTearOff($implType); - if ($svgNativeType =~ /SVGPropertyTearOff/) { - $svgPropertyType = $svgWrappedNativeType; - $headerIncludes{"$svgWrappedNativeType.h"} = 1; - $headerIncludes{"SVGAnimatedPropertyTearOff.h"} = 1; - } elsif ($svgNativeType =~ /SVGListPropertyTearOff/ or $svgNativeType =~ /SVGStaticListPropertyTearOff/) { - $svgListPropertyType = $svgWrappedNativeType; - $headerIncludes{"$svgWrappedNativeType.h"} = 1; - $headerIncludes{"SVGAnimatedListPropertyTearOff.h"} = 1; - } elsif ($svgNativeType =~ /SVGTransformListPropertyTearOff/) { - $svgListPropertyType = $svgWrappedNativeType; - $headerIncludes{"$svgWrappedNativeType.h"} = 1; - $headerIncludes{"SVGAnimatedListPropertyTearOff.h"} = 1; - $headerIncludes{"SVGTransformListPropertyTearOff.h"} = 1; - } elsif ($svgNativeType =~ /SVGPathSegListPropertyTearOff/) { - $svgListPropertyType = $svgWrappedNativeType; - $headerIncludes{"$svgWrappedNativeType.h"} = 1; - $headerIncludes{"SVGAnimatedListPropertyTearOff.h"} = 1; - $headerIncludes{"SVGPathSegListPropertyTearOff.h"} = 1; - } - - return ($svgPropertyType, $svgListPropertyType, $svgNativeType); -} - -sub IsNativeType -{ - my $type = shift; - return exists $nativeType{$type}; -} - -sub JSValueToNative -{ - my $signature = shift; - my $value = shift; - - my $type = $codeGenerator->StripModule($signature->type); - - return "$value.toBoolean(exec)" if $type eq "boolean"; - return "$value.toNumber(exec)" if $type eq "double"; - return "$value.toFloat(exec)" if $type eq "float"; - return "$value.toInt32(exec)" if $type eq "long" or $type eq "short"; - return "$value.toUInt32(exec)" if $type eq "unsigned long" or $type eq "unsigned short"; - return "static_cast<$type>($value.toInteger(exec))" if $type eq "long long" or $type eq "unsigned long long"; - - return "valueToDate(exec, $value)" if $type eq "Date"; - return "static_cast<Range::CompareHow>($value.toInt32(exec))" if $type eq "CompareHow"; - return "static_cast<SVGPaint::SVGPaintType>($value.toInt32(exec))" if $type eq "SVGPaintType"; - - if ($type eq "DOMString") { - return "valueToStringWithNullCheck(exec, $value)" if $signature->extendedAttributes->{"ConvertNullToNullString"} || $signature->extendedAttributes->{"Reflect"}; - return "valueToStringWithUndefinedOrNullCheck(exec, $value)" if $signature->extendedAttributes->{"ConvertUndefinedOrNullToNullString"}; - return "ustringToString($value.toString(exec))"; - } - - if ($type eq "DOMObject") { - return "$value"; - } - - if ($type eq "MediaQueryListListener") { - $implIncludes{"MediaQueryListListener.h"} = 1; - return "MediaQueryListListener::create(" . $value .")"; - } - - if ($type eq "SerializedScriptValue" or $type eq "any") { - $implIncludes{"SerializedScriptValue.h"} = 1; - return "SerializedScriptValue::create(exec, $value)"; - } - - if ($type eq "IDBKey") { - $implIncludes{"IDBBindingUtilities.h"} = 1; - $implIncludes{"IDBKey.h"} = 1; - return "createIDBKeyFromValue(exec, $value)"; - } - - $implIncludes{"HTMLOptionElement.h"} = 1 if $type eq "HTMLOptionElement"; - $implIncludes{"JSCustomVoidCallback.h"} = 1 if $type eq "VoidCallback"; - $implIncludes{"Event.h"} = 1 if $type eq "Event"; - - # Default, assume autogenerated type conversion routines - $implIncludes{"JS$type.h"} = 1; - return "to$type($value)"; -} - -sub NativeToJSValue -{ - my $signature = shift; - my $inFunctionCall = shift; - my $implClassName = shift; - my $value = shift; - my $thisValue = shift; - - my $type = $codeGenerator->StripModule($signature->type); - - return "jsBoolean($value)" if $type eq "boolean"; - - # Need to check Date type before IsPrimitiveType(). - if ($type eq "Date") { - return "jsDateOrNull(exec, $value)"; - } - - if ($signature->extendedAttributes->{"Reflect"} and ($type eq "unsigned long" or $type eq "unsigned short")) { - $value =~ s/getUnsignedIntegralAttribute/getIntegralAttribute/g; - return "jsNumber(std::max(0, " . $value . "))"; - } - - if ($codeGenerator->IsPrimitiveType($type) or $type eq "SVGPaintType" or $type eq "DOMTimeStamp") { - $implIncludes{"<runtime/JSNumberCell.h>"} = 1; - return "jsNumber($value)"; - } - - if ($codeGenerator->IsStringType($type)) { - $implIncludes{"KURL.h"} = 1; - my $conv = $signature->extendedAttributes->{"ConvertNullStringTo"}; - if (defined $conv) { - return "jsStringOrNull(exec, $value)" if $conv eq "Null"; - return "jsStringOrUndefined(exec, $value)" if $conv eq "Undefined"; - return "jsStringOrFalse(exec, $value)" if $conv eq "False"; - - die "Unknown value for ConvertNullStringTo extended attribute"; - } - $conv = $signature->extendedAttributes->{"ConvertScriptString"}; - return "jsOwnedStringOrNull(exec, $value)" if $conv; - $implIncludes{"<runtime/JSString.h>"} = 1; - return "jsString(exec, $value)"; - } - - my $globalObject = "$thisValue->globalObject()"; - - if ($type eq "CSSStyleDeclaration") { - $implIncludes{"CSSMutableStyleDeclaration.h"} = 1; - } - - if ($type eq "NodeList") { - $implIncludes{"NameNodeList.h"} = 1; - } - - if ($type eq "DOMObject") { - if ($implClassName eq "Document") { - $implIncludes{"JSCanvasRenderingContext2D.h"} = 1; - } else { - return "$value.jsValue();"; - } - } elsif ($type =~ /SVGPathSeg/) { - $implIncludes{"JS$type.h"} = 1; - $joinedName = $type; - $joinedName =~ s/Abs|Rel//; - $implIncludes{"$joinedName.h"} = 1; - } elsif ($type eq "SerializedScriptValue" or $type eq "any") { - $implIncludes{"SerializedScriptValue.h"} = 1; - return "$value ? $value->deserialize(exec, castedThis->globalObject()) : jsNull()"; - } else { - # Default, include header with same name. - $implIncludes{"JS$type.h"} = 1; - $implIncludes{"$type.h"} = 1 if not $codeGenerator->AvoidInclusionOfType($type); - } - - return $value if $codeGenerator->IsSVGAnimatedType($type); - - if ($signature->extendedAttributes->{"ReturnsNew"}) { - return "toJSNewlyCreated(exec, $globalObject, WTF::getPtr($value))"; - } - - if ($codeGenerator->IsSVGAnimatedType($implClassName)) { - # Convert from abstract SVGProperty to real type, so the right toJS() method can be invoked. - $value = "static_cast<" . GetNativeType($type) . ">($value)"; - } elsif ($codeGenerator->IsSVGTypeNeedingTearOff($type) and not $implClassName =~ /List$/) { - my $tearOffType = $codeGenerator->GetSVGTypeNeedingTearOff($type); - if ($codeGenerator->IsSVGTypeWithWritablePropertiesNeedingTearOff($type) and $inFunctionCall eq 0 and not defined $signature->extendedAttributes->{"Immutable"}) { - my $getter = $value; - $getter =~ s/imp\.//; - $getter =~ s/imp->//; - $getter =~ s/\(\)//; - my $updateMethod = "&${implClassName}::update" . $codeGenerator->WK_ucfirst($getter); - - my $selfIsTearOffType = $codeGenerator->IsSVGTypeNeedingTearOff($implClassName); - if ($selfIsTearOffType) { - $implIncludes{"SVGStaticPropertyWithParentTearOff.h"} = 1; - $tearOffType =~ s/SVGPropertyTearOff</SVGStaticPropertyWithParentTearOff<$implClassName, /; - - if ($value =~ /matrix/ and $implClassName eq "SVGTransform") { - # SVGTransform offers a matrix() method for internal usage that returns an AffineTransform - # and a svgMatrix() method returning a SVGMatrix, used for the bindings. - $value =~ s/matrix/svgMatrix/; - } - - $value = "${tearOffType}::create(castedThis->impl(), $value, $updateMethod)"; - } else { - $implIncludes{"SVGStaticPropertyTearOff.h"} = 1; - $tearOffType =~ s/SVGPropertyTearOff</SVGStaticPropertyTearOff<$implClassName, /; - $value = "${tearOffType}::create(imp, $value, $updateMethod)"; - } - } elsif ($tearOffType =~ /SVGStaticListPropertyTearOff/) { - my $extraImp = "GetOwnerElementForType<$implClassName, IsDerivedFromSVGElement<$implClassName>::value>::ownerElement(imp), "; - $value = "${tearOffType}::create($extraImp$value)"; - } elsif (not $tearOffType =~ /SVG(Point|PathSeg)List/) { - $value = "${tearOffType}::create($value)"; - } - } - - return "toJS(exec, $globalObject, WTF::getPtr($value))"; -} - -sub ceilingToPowerOf2 -{ - my ($size) = @_; - - my $powerOf2 = 1; - while ($size > $powerOf2) { - $powerOf2 <<= 1; - } - - return $powerOf2; -} - -# Internal Helper -sub GenerateHashTable -{ - my $object = shift; - - my $name = shift; - my $size = shift; - my $keys = shift; - my $specials = shift; - my $value1 = shift; - my $value2 = shift; - my $conditionals = shift; - - # Generate size data for compact' size hash table - - my @table = (); - my @links = (); - - my $compactSize = ceilingToPowerOf2($size * 2); - - my $maxDepth = 0; - my $collisions = 0; - my $numEntries = $compactSize; - - my $i = 0; - foreach (@{$keys}) { - my $depth = 0; - my $h = $object->GenerateHashValue($_) % $numEntries; - - while (defined($table[$h])) { - if (defined($links[$h])) { - $h = $links[$h]; - $depth++; - } else { - $collisions++; - $links[$h] = $compactSize; - $h = $compactSize; - $compactSize++; - } - } - - $table[$h] = $i; - - $i++; - $maxDepth = $depth if ($depth > $maxDepth); - } - - # Start outputing the hashtables - my $nameEntries = "${name}Values"; - $nameEntries =~ s/:/_/g; - - if (($name =~ /Prototype/) or ($name =~ /Constructor/)) { - my $type = $name; - my $implClass; - - if ($name =~ /Prototype/) { - $type =~ s/Prototype.*//; - $implClass = $type; $implClass =~ s/Wrapper$//; - push(@implContent, "/* Hash table for prototype */\n"); - } else { - $type =~ s/Constructor.*//; - $implClass = $type; $implClass =~ s/Constructor$//; - push(@implContent, "/* Hash table for constructor */\n"); - } - } else { - push(@implContent, "/* Hash table */\n"); - } - - # Dump the hash table - my $count = scalar @{$keys} + 1; - push(@implContent, "#if ENABLE(JIT)\n"); - push(@implContent, "#define THUNK_GENERATOR(generator) , generator\n"); - push(@implContent, "#else\n"); - push(@implContent, "#define THUNK_GENERATOR(generator)\n"); - push(@implContent, "#endif\n"); - push(@implContent, "\nstatic const HashTableValue $nameEntries\[$count\] =\n\{\n"); - $i = 0; - foreach my $key (@{$keys}) { - my $conditional; - my $targetType; - - if ($conditionals) { - $conditional = $conditionals->{$key}; - } - if ($conditional) { - my $conditionalString = GenerateConditionalStringFromAttributeValue($conditional); - push(@implContent, "#if ${conditionalString}\n"); - } - - if ("@$specials[$i]" =~ m/Function/) { - $targetType = "static_cast<NativeFunction>"; - } else { - $targetType = "static_cast<PropertySlot::GetValueFunc>"; - } - push(@implContent, " { \"$key\", @$specials[$i], (intptr_t)" . $targetType . "(@$value1[$i]), (intptr_t)@$value2[$i] THUNK_GENERATOR(0) },\n"); - if ($conditional) { - push(@implContent, "#endif\n"); - } - ++$i; - } - push(@implContent, " { 0, 0, 0, 0 THUNK_GENERATOR(0) }\n"); - push(@implContent, "};\n\n"); - push(@implContent, "#undef THUNK_GENERATOR\n"); - my $compactSizeMask = $numEntries - 1; - push(@implContent, "static JSC_CONST_HASHTABLE HashTable $name = { $compactSize, $compactSizeMask, $nameEntries, 0 };\n"); -} - -# Internal helper -sub GenerateHashValue -{ - my $object = shift; - - @chars = split(/ */, $_[0]); - - # This hash is designed to work on 16-bit chunks at a time. But since the normal case - # (above) is to hash UTF-16 characters, we just treat the 8-bit chars as if they - # were 16-bit chunks, which should give matching results - - my $EXP2_32 = 4294967296; - - my $hash = 0x9e3779b9; - my $l = scalar @chars; #I wish this was in Ruby --- Maks - my $rem = $l & 1; - $l = $l >> 1; - - my $s = 0; - - # Main loop - for (; $l > 0; $l--) { - $hash += ord($chars[$s]); - my $tmp = leftShift(ord($chars[$s+1]), 11) ^ $hash; - $hash = (leftShift($hash, 16)% $EXP2_32) ^ $tmp; - $s += 2; - $hash += $hash >> 11; - $hash %= $EXP2_32; - } - - # Handle end case - if ($rem != 0) { - $hash += ord($chars[$s]); - $hash ^= (leftShift($hash, 11)% $EXP2_32); - $hash += $hash >> 17; - } - - # Force "avalanching" of final 127 bits - $hash ^= leftShift($hash, 3); - $hash += ($hash >> 5); - $hash = ($hash% $EXP2_32); - $hash ^= (leftShift($hash, 2)% $EXP2_32); - $hash += ($hash >> 15); - $hash = $hash% $EXP2_32; - $hash ^= (leftShift($hash, 10)% $EXP2_32); - - # this avoids ever returning a hash code of 0, since that is used to - # signal "hash not computed yet", using a value that is likely to be - # effectively the same as 0 when the low bits are masked - $hash = 0x80000000 if ($hash == 0); - - return $hash; -} - -# Internal helper -sub WriteData -{ - if (defined($IMPL)) { - # Write content to file. - print $IMPL @implContentHeader; - - my @includes = (); - foreach my $include (keys %implIncludes) { - my $checkType = $include; - $checkType =~ s/\.h//; - next if $codeGenerator->IsSVGAnimatedType($checkType); - - $include = "\"$include\"" unless $include =~ /^["<]/; # " - push @includes, $include; - } - foreach my $include (sort @includes) { - print $IMPL "#include $include\n"; - } - - print $IMPL @implContent; - close($IMPL); - undef($IMPL); - - @implContentHeader = (); - @implContent = (); - %implIncludes = (); - } - - if (defined($HEADER)) { - # Write content to file. - print $HEADER @headerContentHeader; - - my @includes = (); - foreach my $include (keys %headerIncludes) { - $include = "\"$include\"" unless $include =~ /^["<]/; # " - push @includes, $include; - } - foreach my $include (sort @includes) { - print $HEADER "#include $include\n"; - } - - print $HEADER @headerContent; - - @includes = (); - foreach my $include (keys %headerTrailingIncludes) { - $include = "\"$include\"" unless $include =~ /^["<]/; # " - push @includes, $include; - } - foreach my $include (sort @includes) { - print $HEADER "#include $include\n"; - } - - close($HEADER); - undef($HEADER); - - @headerContentHeader = (); - @headerContent = (); - %headerIncludes = (); - %headerTrailingIncludes = (); - } - - if (defined($DEPS)) { - # Write dependency file. - print $DEPS @depsContent; - close($DEPS); - undef($DEPS); - - @depsContent = (); - } -} - -sub GenerateConstructorDeclaration -{ - my $outputArray = shift; - my $className = shift; - my $dataNode = shift; - - my $constructorClassName = "${className}Constructor"; - my $canConstruct = $dataNode->extendedAttributes->{"CanBeConstructed"}; - my $callWith = $dataNode->extendedAttributes->{"CallWith"}; - - push(@$outputArray, "class ${constructorClassName} : public DOMConstructorObject {\n"); - push(@$outputArray, "public:\n"); - push(@$outputArray, " ${constructorClassName}(JSC::ExecState*, JSDOMGlobalObject*);\n\n"); - - push(@$outputArray, " virtual bool getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier&, JSC::PropertySlot&);\n"); - push(@$outputArray, " virtual bool getOwnPropertyDescriptor(JSC::ExecState*, const JSC::Identifier&, JSC::PropertyDescriptor&);\n"); - push(@$outputArray, " virtual const JSC::ClassInfo* classInfo() const { return &s_info; }\n"); - push(@$outputArray, " static const JSC::ClassInfo s_info;\n"); - - push(@$outputArray, " static PassRefPtr<JSC::Structure> createStructure(JSC::JSValue prototype)\n"); - push(@$outputArray, " {\n"); - push(@$outputArray, " return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount);\n"); - push(@$outputArray, " }\n"); - - push(@$outputArray, "protected:\n"); - push(@$outputArray, " static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | JSC::ImplementsHasInstance | DOMConstructorObject::StructureFlags;\n"); - - if ($canConstruct) { - push(@$outputArray, " static JSC::EncodedJSValue JSC_HOST_CALL construct${className}(JSC::ExecState*);\n"); - push(@$outputArray, " virtual JSC::ConstructType getConstructData(JSC::ConstructData&);\n"); - } - push(@$outputArray, "};\n\n"); -} - -sub GenerateConstructorDefinition -{ - my $outputArray = shift; - - my $className = shift; - my $protoClassName = shift; - my $interfaceName = shift; - my $visibleClassName = shift; - my $dataNode = shift; - - my $constructorClassName = "${className}Constructor"; - my $canConstruct = $dataNode->extendedAttributes->{"CanBeConstructed"}; - my $customConstructFunction = $dataNode->extendedAttributes->{"CustomConstructFunction"}; - my $callWith = $dataNode->extendedAttributes->{"CallWith"}; - my $numberOfconstructParameters = $dataNode->extendedAttributes->{"ConstructorParameters"}; - - push(@$outputArray, "const ClassInfo ${constructorClassName}::s_info = { \"${visibleClassName}Constructor\", 0, &${constructorClassName}Table, 0 };\n\n"); - - push(@$outputArray, "${constructorClassName}::${constructorClassName}(ExecState* exec, JSDOMGlobalObject* globalObject)\n"); - push(@$outputArray, " : DOMConstructorObject(${constructorClassName}::createStructure(globalObject->objectPrototype()), globalObject)\n"); - push(@$outputArray, "{\n"); - if ($interfaceName eq "DOMWindow") { - push(@$outputArray, " putDirect(exec->propertyNames().prototype, globalObject->prototype(), DontDelete | ReadOnly);\n"); - } else { - push(@$outputArray, " putDirect(exec->propertyNames().prototype, ${protoClassName}::self(exec, globalObject), DontDelete | ReadOnly);\n"); - } - push(@$outputArray, " putDirect(exec->propertyNames().length, jsNumber(${numberOfconstructParameters}), ReadOnly | DontDelete | DontEnum);\n") if $numberOfconstructParameters; - push(@$outputArray, "}\n\n"); - - push(@$outputArray, "bool ${constructorClassName}::getOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)\n"); - push(@$outputArray, "{\n"); - push(@$outputArray, " return getStaticValueSlot<${constructorClassName}, DOMObject>(exec, &${constructorClassName}Table, this, propertyName, slot);\n"); - push(@$outputArray, "}\n\n"); - - push(@$outputArray, "bool ${constructorClassName}::getOwnPropertyDescriptor(ExecState* exec, const Identifier& propertyName, PropertyDescriptor& descriptor)\n"); - push(@$outputArray, "{\n"); - push(@$outputArray, " return getStaticValueDescriptor<${constructorClassName}, DOMObject>(exec, &${constructorClassName}Table, this, propertyName, descriptor);\n"); - push(@$outputArray, "}\n\n"); - - if ($canConstruct) { - if (!$customConstructFunction) { - push(@$outputArray, "EncodedJSValue JSC_HOST_CALL ${constructorClassName}::construct${className}(ExecState* exec)\n"); - push(@$outputArray, "{\n"); - my $constructorArg = ""; - if ($callWith and $callWith eq "ScriptExecutionContext") { - $constructorArg = "context"; - push(@$outputArray, " ScriptExecutionContext* context = static_cast<${constructorClassName}*>(exec->callee())->scriptExecutionContext();\n"); - push(@$outputArray, " if (!context)\n"); - push(@$outputArray, " return throwVMError(exec, createReferenceError(exec, \"Reference error\"));\n"); - } - push(@$outputArray, " return JSValue::encode(asObject(toJS(exec, static_cast<${constructorClassName}*>(exec->callee())->globalObject(), ${interfaceName}::create(${constructorArg}))));\n"); - push(@$outputArray, "}\n\n"); - } - - push(@$outputArray, "ConstructType ${constructorClassName}::getConstructData(ConstructData& constructData)\n"); - push(@$outputArray, "{\n"); - push(@$outputArray, " constructData.native.function = construct${className};\n"); - push(@$outputArray, " return ConstructTypeHost;\n"); - push(@$outputArray, "}\n\n"); - } -} - -1; diff --git a/WebCore/bindings/scripts/CodeGeneratorObjC.pm b/WebCore/bindings/scripts/CodeGeneratorObjC.pm deleted file mode 100644 index 6ccebf9..0000000 --- a/WebCore/bindings/scripts/CodeGeneratorObjC.pm +++ /dev/null @@ -1,1816 +0,0 @@ -# -# Copyright (C) 2005, 2006 Nikolas Zimmermann <zimmermann@kde.org> -# Copyright (C) 2006 Anders Carlsson <andersca@mac.com> -# Copyright (C) 2006, 2007 Samuel Weinig <sam@webkit.org> -# Copyright (C) 2006 Alexey Proskuryakov <ap@webkit.org> -# Copyright (C) 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved. -# Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au> -# Copyright (C) 2010 Google Inc. -# Copyright (C) Research In Motion Limited 2010. All rights reserved. -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public -# License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. -# -# You should have received a copy of the GNU Library General Public License -# along with this library; see the file COPYING.LIB. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02110-1301, USA. -# - -package CodeGeneratorObjC; - -# Global Variables -my $module = ""; -my $outputDir = ""; -my $writeDependencies = 0; -my %publicInterfaces = (); -my $newPublicClass = 0; -my $interfaceAvailabilityVersion = ""; -my $isProtocol = 0; -my $noImpl = 0; - -my @headerContentHeader = (); -my @headerContent = (); -my %headerForwardDeclarations = (); -my %headerForwardDeclarationsForProtocols = (); - -my @privateHeaderContentHeader = (); -my @privateHeaderContent = (); -my %privateHeaderForwardDeclarations = (); -my %privateHeaderForwardDeclarationsForProtocols = (); - -my @internalHeaderContent = (); - -my @implContentHeader = (); -my @implContent = (); -my %implIncludes = (); -my @depsContent = (); - -# Hashes -my %protocolTypeHash = ("XPathNSResolver" => 1, "EventListener" => 1, "EventTarget" => 1, "NodeFilter" => 1, - "SVGLocatable" => 1, "SVGTransformable" => 1, "SVGStylable" => 1, "SVGFilterPrimitiveStandardAttributes" => 1, - "SVGTests" => 1, "SVGLangSpace" => 1, "SVGExternalResourcesRequired" => 1, "SVGURIReference" => 1, - "SVGZoomAndPan" => 1, "SVGFitToViewBox" => 1, "SVGAnimatedPathData" => 1, "ElementTimeControl" => 1); -my %nativeObjCTypeHash = ("URL" => 1, "Color" => 1); - -# FIXME: this should be replaced with a function that recurses up the tree -# to find the actual base type. -my %baseTypeHash = ("Object" => 1, "Node" => 1, "NodeList" => 1, "NamedNodeMap" => 1, "DOMImplementation" => 1, - "Event" => 1, "CSSRule" => 1, "CSSValue" => 1, "StyleSheet" => 1, "MediaList" => 1, - "Counter" => 1, "Rect" => 1, "RGBColor" => 1, "XPathExpression" => 1, "XPathResult" => 1, - "NodeIterator" => 1, "TreeWalker" => 1, "AbstractView" => 1, "Blob" => 1, - "SVGAngle" => 1, "SVGAnimatedAngle" => 1, "SVGAnimatedBoolean" => 1, "SVGAnimatedEnumeration" => 1, - "SVGAnimatedInteger" => 1, "SVGAnimatedLength" => 1, "SVGAnimatedLengthList" => 1, - "SVGAnimatedNumber" => 1, "SVGAnimatedNumberList" => 1, - "SVGAnimatedPreserveAspectRatio" => 1, "SVGAnimatedRect" => 1, "SVGAnimatedString" => 1, - "SVGAnimatedTransformList" => 1, "SVGLength" => 1, "SVGLengthList" => 1, "SVGMatrix" => 1, - "SVGNumber" => 1, "SVGNumberList" => 1, "SVGPathSeg" => 1, "SVGPathSegList" => 1, "SVGPoint" => 1, - "SVGPointList" => 1, "SVGPreserveAspectRatio" => 1, "SVGRect" => 1, "SVGRenderingIntent" => 1, - "SVGStringList" => 1, "SVGTransform" => 1, "SVGTransformList" => 1, "SVGUnitTypes" => 1); - -# Constants -my $buildingForTigerOrEarlier = 1 if $ENV{"MACOSX_DEPLOYMENT_TARGET"} and $ENV{"MACOSX_DEPLOYMENT_TARGET"} <= 10.4; -my $buildingForLeopardOrLater = 1 if $ENV{"MACOSX_DEPLOYMENT_TARGET"} and $ENV{"MACOSX_DEPLOYMENT_TARGET"} >= 10.5; -my $exceptionInit = "WebCore::ExceptionCode ec = 0;"; -my $jsContextSetter = "WebCore::JSMainThreadNullState state;"; -my $exceptionRaiseOnError = "WebCore::raiseOnDOMError(ec);"; -my $assertMainThread = "{ DOM_ASSERT_MAIN_THREAD(); WebCoreThreadViolationCheckRoundOne(); }"; - -my %conflictMethod = ( - # FIXME: Add C language keywords? - # FIXME: Add other predefined types like "id"? - - "callWebScriptMethod:withArguments:" => "WebScriptObject", - "evaluateWebScript:" => "WebScriptObject", - "removeWebScriptKey:" => "WebScriptObject", - "setException:" => "WebScriptObject", - "setWebScriptValueAtIndex:value:" => "WebScriptObject", - "stringRepresentation" => "WebScriptObject", - "webScriptValueAtIndex:" => "WebScriptObject", - - "autorelease" => "NSObject", - "awakeAfterUsingCoder:" => "NSObject", - "class" => "NSObject", - "classForCoder" => "NSObject", - "conformsToProtocol:" => "NSObject", - "copy" => "NSObject", - "copyWithZone:" => "NSObject", - "dealloc" => "NSObject", - "description" => "NSObject", - "doesNotRecognizeSelector:" => "NSObject", - "encodeWithCoder:" => "NSObject", - "finalize" => "NSObject", - "forwardInvocation:" => "NSObject", - "hash" => "NSObject", - "init" => "NSObject", - "initWithCoder:" => "NSObject", - "isEqual:" => "NSObject", - "isKindOfClass:" => "NSObject", - "isMemberOfClass:" => "NSObject", - "isProxy" => "NSObject", - "methodForSelector:" => "NSObject", - "methodSignatureForSelector:" => "NSObject", - "mutableCopy" => "NSObject", - "mutableCopyWithZone:" => "NSObject", - "performSelector:" => "NSObject", - "release" => "NSObject", - "replacementObjectForCoder:" => "NSObject", - "respondsToSelector:" => "NSObject", - "retain" => "NSObject", - "retainCount" => "NSObject", - "self" => "NSObject", - "superclass" => "NSObject", - "zone" => "NSObject", -); - -my $fatalError = 0; - -# Default License Templates -my $headerLicenseTemplate = << "EOF"; -/* - * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. - * Copyright (C) 2006 Samuel Weinig <sam.weinig\@gmail.com> - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -EOF - -my $implementationLicenseTemplate = << "EOF"; -/* - * This file is part of the WebKit open source project. - * This file has been generated by generate-bindings.pl. DO NOT MODIFY! - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -EOF - -# Default constructor -sub new -{ - my $object = shift; - my $reference = { }; - - $codeGenerator = shift; - $outputDir = shift; - shift; # $outputHeadersDir - shift; # $useLayerOnTop - shift; # $preprocessor - $writeDependencies = shift; - - bless($reference, $object); - return $reference; -} - -sub finish -{ - my $object = shift; -} - -sub ReadPublicInterfaces -{ - my $class = shift; - my $superClass = shift; - my $defines = shift; - my $isProtocol = shift; - - my $found = 0; - my $actualSuperClass; - %publicInterfaces = (); - - my $fileName = "WebCore/bindings/objc/PublicDOMInterfaces.h"; - my $gccLocation = ""; - if ($ENV{CC}) { - $gccLocation = $ENV{CC}; - } elsif (($Config::Config{'osname'}) =~ /solaris/i) { - $gccLocation = "/usr/sfw/bin/gcc"; - } else { - $gccLocation = "/usr/bin/gcc"; - } - open FILE, "-|", $gccLocation, "-E", "-P", "-x", "objective-c", - (map { "-D$_" } split(/ +/, $defines)), "-DOBJC_CODE_GENERATION", $fileName or die "Could not open $fileName"; - my @documentContent = <FILE>; - close FILE; - - foreach $line (@documentContent) { - if (!$isProtocol && $line =~ /^\s*\@interface\s*$class\s*:\s*(\w+)\s*([A-Z0-9_]*)/) { - if ($superClass ne $1) { - warn "Public API change. Superclass for \"$class\" differs ($1 != $superClass)"; - $fatalError = 1; - } - - $interfaceAvailabilityVersion = $2 if defined $2; - $found = 1; - next; - } elsif ($isProtocol && $line =~ /^\s*\@protocol $class\s*<[^>]+>\s*([A-Z0-9_]*)/) { - $interfaceAvailabilityVersion = $1 if defined $1; - $found = 1; - next; - } - - last if $found and $line =~ /^\s?\@end\s?$/; - - if ($found) { - # trim whitspace - $line =~ s/^\s+//; - $line =~ s/\s+$//; - - my $availabilityMacro = ""; - $line =~ s/\s([A-Z0-9_]+)\s*;$/;/; - $availabilityMacro = $1 if defined $1; - - $publicInterfaces{$line} = $availabilityMacro if length $line; - } - } - - # If this class was not found in PublicDOMInterfaces.h then it should be considered as an entirely new public class. - $newPublicClass = !$found; - $interfaceAvailabilityVersion = "WEBKIT_VERSION_LATEST" if $newPublicClass; -} - -sub GenerateConditionalString -{ - my $node = shift; - my $conditional = $node->extendedAttributes->{"Conditional"}; - if ($conditional) { - if ($conditional =~ /&/) { - return "ENABLE(" . join(") && ENABLE(", split(/&/, $conditional)) . ")"; - } elsif ($conditional =~ /\|/) { - return "ENABLE(" . join(") || ENABLE(", split(/\|/, $conditional)) . ")"; - } else { - return "ENABLE(" . $conditional . ")"; - } - } else { - return ""; - } -} - -# Params: 'domClass' struct -sub GenerateInterface -{ - my $object = shift; - my $dataNode = shift; - my $defines = shift; - - $fatalError = 0; - - my $name = $dataNode->name; - my $className = GetClassName($name); - my $parentClassName = "DOM" . GetParentImplClassName($dataNode); - $isProtocol = $dataNode->extendedAttributes->{ObjCProtocol}; - $noImpl = $dataNode->extendedAttributes->{ObjCCustomImplementation} || $isProtocol; - - ReadPublicInterfaces($className, $parentClassName, $defines, $isProtocol); - - # Start actual generation.. - $object->GenerateHeader($dataNode); - $object->GenerateImplementation($dataNode) unless $noImpl; - - # Write changes. - $object->WriteData("DOM" . $name); - - # Check for missing public API - if (keys %publicInterfaces > 0) { - my $missing = join("\n", keys %publicInterfaces); - warn "Public API change. There are missing public properties and/or methods from the \"$className\" class.\n$missing\n"; - $fatalError = 1; - } - - die if $fatalError; -} - -# Params: 'idlDocument' struct -sub GenerateModule -{ - my $object = shift; - my $dataNode = shift; - - $module = $dataNode->module; -} - -sub GetClassName -{ - my $name = $codeGenerator->StripModule(shift); - - # special cases - return "NSString" if $codeGenerator->IsStringType($name) or $name eq "SerializedScriptValue"; - return "NS$name" if IsNativeObjCType($name); - return "BOOL" if $name eq "boolean"; - return "unsigned" if $name eq "unsigned long"; - return "int" if $name eq "long"; - return "NSTimeInterval" if $name eq "Date"; - return "DOMAbstractView" if $name eq "DOMWindow"; - return $name if $codeGenerator->IsPrimitiveType($name) or $name eq "DOMImplementation" or $name eq "DOMTimeStamp"; - - # Default, assume Objective-C type has the same type name as - # idl type prefixed with "DOM". - return "DOM$name"; -} - -sub GetClassHeaderName -{ - my $name = shift; - - return "DOMDOMImplementation" if $name eq "DOMImplementation"; - return $name; -} - -sub GetImplClassName -{ - my $name = $codeGenerator->StripModule(shift); - - return "DOMImplementationFront" if $name eq "DOMImplementation"; - return "DOMWindow" if $name eq "AbstractView"; - return $name; -} - -sub GetParentImplClassName -{ - my $dataNode = shift; - - return "Object" if @{$dataNode->parents} eq 0; - - my $parent = $codeGenerator->StripModule($dataNode->parents(0)); - - # special cases - return "Object" if $parent eq "HTMLCollection"; - - return $parent; -} - -sub GetParentAndProtocols -{ - my $dataNode = shift; - my $numParents = @{$dataNode->parents}; - - my $parent = ""; - my @protocols = (); - if ($numParents eq 0) { - if ($isProtocol) { - push(@protocols, "NSObject"); - push(@protocols, "NSCopying") if $dataNode->name eq "EventTarget"; - } else { - $parent = "DOMObject"; - } - } elsif ($numParents eq 1) { - my $parentName = $codeGenerator->StripModule($dataNode->parents(0)); - if ($isProtocol) { - die "Parents of protocols must also be protocols." unless IsProtocolType($parentName); - push(@protocols, "DOM" . $parentName); - } else { - if (IsProtocolType($parentName)) { - push(@protocols, "DOM" . $parentName); - } elsif ($parentName eq "HTMLCollection") { - $parent = "DOMObject"; - } else { - $parent = "DOM" . $parentName; - } - } - } else { - my @parents = @{$dataNode->parents}; - my $firstParent = $codeGenerator->StripModule(shift(@parents)); - if (IsProtocolType($firstParent)) { - push(@protocols, "DOM" . $firstParent); - if (!$isProtocol) { - $parent = "DOMObject"; - } - } else { - $parent = "DOM" . $firstParent; - } - - foreach my $parentName (@parents) { - $parentName = $codeGenerator->StripModule($parentName); - die "Everything past the first class should be a protocol!" unless IsProtocolType($parentName); - - push(@protocols, "DOM" . $parentName); - } - } - - return ($parent, @protocols); -} - -sub GetBaseClass -{ - $parent = shift; - - return $parent if $parent eq "Object" or IsBaseType($parent); - return "Event" if $parent eq "UIEvent"; - return "CSSValue" if $parent eq "SVGColor" or $parent eq "CSSValueList"; - return "Node"; -} - -sub IsBaseType -{ - my $type = shift; - - return 1 if $baseTypeHash{$type}; - return 0; -} - -sub IsProtocolType -{ - my $type = shift; - - return 1 if $protocolTypeHash{$type}; - return 0; -} - -sub IsNativeObjCType -{ - my $type = shift; - - return 1 if $nativeObjCTypeHash{$type}; - return 0; -} - -sub GetObjCType -{ - my $type = shift; - my $name = GetClassName($type); - - return "id <$name>" if IsProtocolType($type); - return $name if $codeGenerator->IsPrimitiveType($type) or $type eq "DOMTimeStamp"; - return "unsigned short" if $type eq "CompareHow" or $type eq "SVGPaintType"; - return "$name *"; -} - -sub GetPropertyAttributes -{ - my $type = $codeGenerator->StripModule(shift); - my $readOnly = shift; - - my @attributes = (); - - push(@attributes, "readonly") if $readOnly; - - # FIXME: <rdar://problem/5049934> Consider using 'nonatomic' on the DOM @property declarations. - if ($codeGenerator->IsStringType($type) || IsNativeObjCType($type)) { - push(@attributes, "copy"); - } elsif ($codeGenerator->IsSVGAnimatedType($type)) { - push(@attributes, "retain"); - } elsif (!$codeGenerator->IsStringType($type) && !$codeGenerator->IsPrimitiveType($type) && $type ne "DOMTimeStamp" && $type ne "CompareHow" && $type ne "SVGPaintType") { - push(@attributes, "retain"); - } - - return "" unless @attributes > 0; - return "(" . join(", ", @attributes) . ")"; -} - -sub ConversionNeeded -{ - my $type = $codeGenerator->StripModule(shift); - - return !$codeGenerator->IsNonPointerType($type) && !$codeGenerator->IsStringType($type) && !IsNativeObjCType($type); -} - -sub GetObjCTypeGetter -{ - my $argName = shift; - my $type = $codeGenerator->StripModule(shift); - - return $argName if $codeGenerator->IsPrimitiveType($type) or $codeGenerator->IsStringType($type) or IsNativeObjCType($type); - return $argName . "Node" if $type eq "EventTarget"; - return "static_cast<WebCore::Range::CompareHow>($argName)" if $type eq "CompareHow"; - return "static_cast<WebCore::SVGPaint::SVGPaintType>($argName)" if $type eq "SVGPaintType"; - return "WTF::getPtr(nativeEventListener)" if $type eq "EventListener"; - return "WTF::getPtr(nativeNodeFilter)" if $type eq "NodeFilter"; - return "WTF::getPtr(nativeResolver)" if $type eq "XPathNSResolver"; - - if ($type eq "SerializedScriptValue") { - $implIncludes{"SerializedScriptValue.h"} = 1; - return "WebCore::SerializedScriptValue::create(WTF::String($argName))"; - } - return "core($argName)"; -} - -sub AddForwardDeclarationsForType -{ - my $type = $codeGenerator->StripModule(shift); - my $public = shift; - - return if $codeGenerator->IsNonPointerType($type) ; - - my $class = GetClassName($type); - - if (IsProtocolType($type)) { - $headerForwardDeclarationsForProtocols{$class} = 1 if $public; - $privateHeaderForwardDeclarationsForProtocols{$class} = 1 if !$public and !$headerForwardDeclarationsForProtocols{$class}; - return; - } - - $headerForwardDeclarations{$class} = 1 if $public; - - # Private headers include the public header, so only add a forward declaration to the private header - # if the public header does not already have the same forward declaration. - $privateHeaderForwardDeclarations{$class} = 1 if !$public and !$headerForwardDeclarations{$class}; -} - -sub AddIncludesForType -{ - my $type = $codeGenerator->StripModule(shift); - - return if $codeGenerator->IsNonPointerType($type); - - if (IsNativeObjCType($type)) { - if ($type eq "Color") { - $implIncludes{"ColorMac.h"} = 1; - } - return; - } - - if ($codeGenerator->IsStringType($type)) { - $implIncludes{"KURL.h"} = 1; - return; - } - - if ($type eq "DOMWindow") { - $implIncludes{"DOMAbstractViewInternal.h"} = 1; - $implIncludes{"DOMWindow.h"} = 1; - return; - } - - if ($type eq "DOMImplementation") { - $implIncludes{"DOMDOMImplementationInternal.h"} = 1; - $implIncludes{"DOMImplementationFront.h"} = 1; - return; - } - - if ($type eq "EventTarget") { - $implIncludes{"Node.h"} = 1; - $implIncludes{"DOMEventTarget.h"} = 1; - return; - } - - if ($codeGenerator->IsSVGAnimatedType($type)) { - $implIncludes{"${type}.h"} = 1; - $implIncludes{"DOM${type}Internal.h"} = 1; - return; - } - - if ($type =~ /(\w+)(Abs|Rel)$/) { - $implIncludes{"$1.h"} = 1; - $implIncludes{"DOM${type}Internal.h"} = 1; - return; - } - - if ($type eq "NodeFilter") { - $implIncludes{"NodeFilter.h"} = 1; - $implIncludes{"ObjCNodeFilterCondition.h"} = 1; - return; - } - - if ($type eq "EventListener") { - $implIncludes{"EventListener.h"} = 1; - $implIncludes{"ObjCEventListener.h"} = 1; - return; - } - - if ($type eq "XPathNSResolver") { - $implIncludes{"DOMCustomXPathNSResolver.h"} = 1; - $implIncludes{"XPathNSResolver.h"} = 1; - return; - } - - if ($type eq "SerializedScriptValue") { - $implIncludes{"SerializedScriptValue.h"} = 1; - return; - } - - # FIXME: won't compile without these - $implIncludes{"CSSMutableStyleDeclaration.h"} = 1 if $type eq "CSSStyleDeclaration"; - $implIncludes{"NameNodeList.h"} = 1 if $type eq "NodeList"; - - # Default, include the same named file (the implementation) and the same name prefixed with "DOM". - $implIncludes{"$type.h"} = 1 if not $codeGenerator->AvoidInclusionOfType($type); - $implIncludes{"DOM${type}Internal.h"} = 1; -} - -sub GetSVGTypeWithNamespace -{ - my $type = shift; - my $typeWithNamespace = "WebCore::" . $codeGenerator->GetSVGTypeNeedingTearOff($type); - - # Special case for DOMSVGNumber - $typeWithNamespace =~ s/</\<WebCore::/ unless $type eq "SVGNumber"; - return $typeWithNamespace; -} - -sub GetSVGPropertyTypes -{ - my $implType = shift; - - my $svgPropertyType; - my $svgListPropertyType; - my $svgNativeType; - - return ($svgPropertyType, $svgListPropertyType, $svgNativeType) if not $implType =~ /SVG/; - - $svgNativeType = $codeGenerator->GetSVGTypeNeedingTearOff($implType); - return ($svgPropertyType, $svgListPropertyType, $svgNativeType) if not $svgNativeType; - - # Append space to avoid compilation errors when using PassRefPtr<$svgNativeType> - $svgNativeType = "WebCore::$svgNativeType "; - $svgNativeType =~ s/</\<WebCore::/ if not $svgNativeType =~ /float/; - - my $svgWrappedNativeType = $codeGenerator->GetSVGWrappedTypeNeedingTearOff($implType); - if ($svgNativeType =~ /SVGPropertyTearOff/) { - if ($svgWrappedNativeType eq "float") { - # Special case for DOMSVGNumber - $svgPropertyType = $svgWrappedNativeType; - } else { - $svgPropertyType = "WebCore::$svgWrappedNativeType"; - $svgPropertyType =~ s/</\<WebCore::/; - } - } elsif ($svgNativeType =~ /SVGListPropertyTearOff/ or $svgNativeType =~ /SVGStaticListPropertyTearOff/) { - $svgListPropertyType = "WebCore::$svgWrappedNativeType"; - $svgListPropertyType =~ s/</\<WebCore::/; - } elsif ($svgNativeType =~ /SVGTransformListPropertyTearOff/) { - $svgListPropertyType = "WebCore::$svgWrappedNativeType"; - $svgListPropertyType =~ s/</\<WebCore::/; - } elsif ($svgNativeType =~ /SVGPathSegListPropertyTearOff/) { - $svgListPropertyType = "WebCore::$svgWrappedNativeType"; - $svgListPropertyType =~ s/</\<WebCore::/; - } - - return ($svgPropertyType, $svgListPropertyType, $svgNativeType); -} - -sub GenerateHeader -{ - my $object = shift; - my $dataNode = shift; - - my $interfaceName = $dataNode->name; - my $className = GetClassName($interfaceName); - - my $parentName = ""; - my @protocolsToImplement = (); - ($parentName, @protocolsToImplement) = GetParentAndProtocols($dataNode); - - my $numConstants = @{$dataNode->constants}; - my $numAttributes = @{$dataNode->attributes}; - my $numFunctions = @{$dataNode->functions}; - - # - Add default header template - @headerContentHeader = split("\r", $headerLicenseTemplate); - push(@headerContentHeader, "\n"); - - # - INCLUDES - - my $includedWebKitAvailabilityHeader = 0; - unless ($isProtocol) { - my $parentHeaderName = GetClassHeaderName($parentName); - push(@headerContentHeader, "#import <WebCore/$parentHeaderName.h>\n"); - $includedWebKitAvailabilityHeader = 1; - } - - foreach my $parentProtocol (@protocolsToImplement) { - next if $parentProtocol =~ /^NS/; - $parentProtocol = GetClassHeaderName($parentProtocol); - push(@headerContentHeader, "#import <WebCore/$parentProtocol.h>\n"); - $includedWebKitAvailabilityHeader = 1; - } - - # Special case needed for legacy support of DOMRange - if ($interfaceName eq "Range") { - push(@headerContentHeader, "#import <WebCore/DOMCore.h>\n"); - push(@headerContentHeader, "#import <WebCore/DOMDocument.h>\n"); - push(@headerContentHeader, "#import <WebCore/DOMRangeException.h>\n"); - $includedWebKitAvailabilityHeader = 1; - } - - push(@headerContentHeader, "#import <JavaScriptCore/WebKitAvailability.h>\n") unless $includedWebKitAvailabilityHeader; - - my $interfaceAvailabilityVersionCheck = "#if WEBKIT_VERSION_MAX_ALLOWED >= $interfaceAvailabilityVersion\n\n"; - - push(@headerContentHeader, "\n"); - push(@headerContentHeader, $interfaceAvailabilityVersionCheck) if length $interfaceAvailabilityVersion; - - # - Add constants. - if ($numConstants > 0) { - my @headerConstants = (); - - # FIXME: we need a way to include multiple enums. - foreach my $constant (@{$dataNode->constants}) { - my $constantName = $constant->name; - my $constantValue = $constant->value; - - my $output = " DOM_" . $constantName . " = " . $constantValue; - push(@headerConstants, $output); - } - - my $combinedConstants = join(",\n", @headerConstants); - - # FIXME: the formatting of the enums should line up the equal signs. - # FIXME: enums are unconditionally placed in the public header. - push(@headerContent, "enum {\n"); - push(@headerContent, $combinedConstants); - push(@headerContent, "\n};\n\n"); - } - - # - Begin @interface or @protocol - my $interfaceDeclaration = ($isProtocol ? "\@protocol $className" : "\@interface $className : $parentName"); - $interfaceDeclaration .= " <" . join(", ", @protocolsToImplement) . ">" if @protocolsToImplement > 0; - $interfaceDeclaration .= "\n"; - - push(@headerContent, $interfaceDeclaration); - - my @headerAttributes = (); - my @privateHeaderAttributes = (); - - # - Add attribute getters/setters. - if ($numAttributes > 0) { - foreach my $attribute (@{$dataNode->attributes}) { - my $attributeName = $attribute->signature->name; - - if ($attributeName eq "id" or $attributeName eq "hash" or $attributeName eq "description") { - # Special case some attributes (like id and hash) to have a "Name" suffix to avoid ObjC naming conflicts. - $attributeName .= "Name"; - } elsif ($attributeName eq "frame") { - # Special case attribute frame to be frameBorders. - $attributeName .= "Borders"; - } - - my $attributeType = GetObjCType($attribute->signature->type); - my $attributeIsReadonly = ($attribute->type =~ /^readonly/); - - my $property = "\@property" . GetPropertyAttributes($attribute->signature->type, $attributeIsReadonly); - # Some SVGFE*Element.idl use 'operator' as attribute name, rewrite as '_operator' to avoid clashes with C/C++ - $attributeName =~ s/operator/_operator/ if ($attributeName =~ /operator/); - $property .= " " . $attributeType . ($attributeType =~ /\*$/ ? "" : " ") . $attributeName; - - my $publicInterfaceKey = $property . ";"; - - my $availabilityMacro = ""; - if (defined $publicInterfaces{$publicInterfaceKey} and length $publicInterfaces{$publicInterfaceKey}) { - $availabilityMacro = $publicInterfaces{$publicInterfaceKey}; - } - - $availabilityMacro = "WEBKIT_OBJC_METHOD_ANNOTATION($availabilityMacro)" if length $availabilityMacro and $buildingForTigerOrEarlier; - - my $declarationSuffix = ";\n"; - $declarationSuffix = " $availabilityMacro;\n" if length $availabilityMacro; - - my $public = (defined $publicInterfaces{$publicInterfaceKey} or $newPublicClass); - delete $publicInterfaces{$publicInterfaceKey}; - - AddForwardDeclarationsForType($attribute->signature->type, $public); - - my $setterName = "set" . ucfirst($attributeName) . ":"; - - my $conflict = $conflictMethod{$attributeName}; - if ($conflict) { - warn "$className conflicts with $conflict method $attributeName\n"; - $fatalError = 1; - } - - $conflict = $conflictMethod{$setterName}; - if ($conflict) { - warn "$className conflicts with $conflict method $setterName\n"; - $fatalError = 1; - } - - if ($buildingForLeopardOrLater) { - $property .= $declarationSuffix; - push(@headerAttributes, $property) if $public; - push(@privateHeaderAttributes, $property) unless $public; - } else { - my $attributeConditionalString = GenerateConditionalString($attribute->signature); - if ($attributeConditionalString) { - push(@headerAttributes, "#if ${attributeConditionalString}\n") if $public; - push(@privateHeaderAttributes, "#if ${attributeConditionalString}\n") unless $public; - } - - # - GETTER - my $getter = "- (" . $attributeType . ")" . $attributeName . $declarationSuffix; - push(@headerAttributes, $getter) if $public; - push(@privateHeaderAttributes, $getter) unless $public; - - # - SETTER - if (!$attributeIsReadonly) { - my $setter = "- (void)$setterName(" . $attributeType . ")new" . ucfirst($attributeName) . $declarationSuffix; - push(@headerAttributes, $setter) if $public; - push(@privateHeaderAttributes, $setter) unless $public; - } - - if ($attributeConditionalString) { - push(@headerAttributes, "#endif\n") if $public; - push(@privateHeaderAttributes, "#endif\n") unless $public; - } - } - } - - push(@headerContent, @headerAttributes) if @headerAttributes > 0; - } - - my @headerFunctions = (); - my @privateHeaderFunctions = (); - my @deprecatedHeaderFunctions = (); - - # - Add functions. - if ($numFunctions > 0) { - foreach my $function (@{$dataNode->functions}) { - my $functionName = $function->signature->name; - - my $returnType = GetObjCType($function->signature->type); - my $needsDeprecatedVersion = (@{$function->parameters} > 1 and $function->signature->extendedAttributes->{"OldStyleObjC"}); - my $numberOfParameters = @{$function->parameters}; - my %typesToForwardDeclare = ($function->signature->type => 1); - - my $parameterIndex = 0; - my $functionSig = "- ($returnType)$functionName"; - my $methodName = $functionName; - foreach my $param (@{$function->parameters}) { - my $paramName = $param->name; - my $paramType = GetObjCType($param->type); - - $typesToForwardDeclare{$param->type} = 1; - - if ($parameterIndex >= 1) { - my $paramPrefix = $param->extendedAttributes->{"ObjCPrefix"}; - $paramPrefix = $paramName unless defined($paramPrefix); - $functionSig .= " $paramPrefix"; - $methodName .= $paramPrefix; - } - - $functionSig .= ":($paramType)$paramName"; - $methodName .= ":"; - - $parameterIndex++; - } - - my $publicInterfaceKey = $functionSig . ";"; - - my $conflict = $conflictMethod{$methodName}; - if ($conflict) { - warn "$className conflicts with $conflict method $methodName\n"; - $fatalError = 1; - } - - if ($isProtocol && !$newPublicClass && !defined $publicInterfaces{$publicInterfaceKey}) { - warn "Protocol method $publicInterfaceKey is not in PublicDOMInterfaces.h. Protocols require all methods to be public"; - $fatalError = 1; - } - - my $availabilityMacro = ""; - if (defined $publicInterfaces{$publicInterfaceKey} and length $publicInterfaces{$publicInterfaceKey}) { - $availabilityMacro = $publicInterfaces{$publicInterfaceKey}; - } - - $availabilityMacro = "WEBKIT_OBJC_METHOD_ANNOTATION($availabilityMacro)" if length $availabilityMacro and $buildingForTigerOrEarlier; - - my $functionDeclaration = $functionSig; - $functionDeclaration .= " " . $availabilityMacro if length $availabilityMacro; - $functionDeclaration .= ";\n"; - - my $public = (defined $publicInterfaces{$publicInterfaceKey} or $newPublicClass); - delete $publicInterfaces{$publicInterfaceKey}; - - foreach my $type (keys %typesToForwardDeclare) { - # add any forward declarations to the public header if a deprecated version will be generated - AddForwardDeclarationsForType($type, 1) if $needsDeprecatedVersion; - AddForwardDeclarationsForType($type, $public) unless $public and $needsDeprecatedVersion; - } - - push(@headerFunctions, $functionDeclaration) if $public; - push(@privateHeaderFunctions, $functionDeclaration) unless $public; - - # generate the old style method names with un-named parameters, these methods are deprecated - if ($needsDeprecatedVersion) { - my $deprecatedFunctionSig = $functionSig; - $deprecatedFunctionSig =~ s/\s\w+:/ :/g; # remove parameter names - - $publicInterfaceKey = $deprecatedFunctionSig . ";"; - - my $availabilityMacro = "AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_3_0"; - if (defined $publicInterfaces{$publicInterfaceKey} and length $publicInterfaces{$publicInterfaceKey}) { - $availabilityMacro = $publicInterfaces{$publicInterfaceKey}; - } - - $availabilityMacro = "WEBKIT_OBJC_METHOD_ANNOTATION($availabilityMacro)" if $buildingForTigerOrEarlier; - - $functionDeclaration = "$deprecatedFunctionSig $availabilityMacro;\n"; - - push(@deprecatedHeaderFunctions, $functionDeclaration); - - unless (defined $publicInterfaces{$publicInterfaceKey}) { - warn "Deprecated method $publicInterfaceKey is not in PublicDOMInterfaces.h. All deprecated methods need to be public, or should have the OldStyleObjC IDL attribute removed"; - $fatalError = 1; - } - - delete $publicInterfaces{$publicInterfaceKey}; - } - } - - if (@headerFunctions > 0) { - push(@headerContent, "\n") if $buildingForLeopardOrLater and @headerAttributes > 0; - push(@headerContent, @headerFunctions); - } - } - - if (@deprecatedHeaderFunctions > 0 && $isProtocol) { - push(@headerContent, @deprecatedHeaderFunctions); - } - - # - End @interface or @protocol - push(@headerContent, "\@end\n"); - - if (@deprecatedHeaderFunctions > 0 && !$isProtocol) { - # - Deprecated category @interface - push(@headerContent, "\n\@interface $className (" . $className . "Deprecated)\n"); - push(@headerContent, @deprecatedHeaderFunctions); - push(@headerContent, "\@end\n"); - } - - push(@headerContent, "\n#endif\n") if length $interfaceAvailabilityVersion; - - my %alwaysGenerateForNoSVGBuild = map { $_ => 1 } qw(DOMHTMLEmbedElement DOMHTMLObjectElement); - - if (@privateHeaderAttributes > 0 or @privateHeaderFunctions > 0 or exists $alwaysGenerateForNoSVGBuild{$className}) { - # - Private category @interface - @privateHeaderContentHeader = split("\r", $headerLicenseTemplate); - push(@privateHeaderContentHeader, "\n"); - - my $classHeaderName = GetClassHeaderName($className); - push(@privateHeaderContentHeader, "#import <WebCore/$classHeaderName.h>\n\n"); - push(@privateHeaderContentHeader, $interfaceAvailabilityVersionCheck) if length $interfaceAvailabilityVersion; - - @privateHeaderContent = (); - push(@privateHeaderContent, "\@interface $className (" . $className . "Private)\n"); - push(@privateHeaderContent, @privateHeaderAttributes) if @privateHeaderAttributes > 0; - push(@privateHeaderContent, "\n") if $buildingForLeopardOrLater and @privateHeaderAttributes > 0 and @privateHeaderFunctions > 0; - push(@privateHeaderContent, @privateHeaderFunctions) if @privateHeaderFunctions > 0; - push(@privateHeaderContent, "\@end\n"); - - push(@privateHeaderContent, "\n#endif\n") if length $interfaceAvailabilityVersion; - } - - unless ($isProtocol) { - # Generate internal interfaces - my $implClassName = GetImplClassName($interfaceName); - my $implClassNameWithNamespace = "WebCore::" . $implClassName; - - my $implType = $implClassNameWithNamespace; - my ($svgPropertyType, $svgListPropertyType, $svgNativeType) = GetSVGPropertyTypes($implClassName); - $implType = $svgNativeType if $svgNativeType; - - # Generate interface definitions. - @internalHeaderContent = split("\r", $implementationLicenseTemplate); - - push(@internalHeaderContent, "\n#import <WebCore/$className.h>\n\n"); - push(@internalHeaderContent, "#import <WebCore/SVGAnimatedPropertyTearOff.h>\n\n") if $svgPropertyType; - if ($svgListPropertyType) { - push(@internalHeaderContent, "#import <WebCore/SVGAnimatedListPropertyTearOff.h>\n\n"); - push(@internalHeaderContent, "#import <WebCore/SVGTransformListPropertyTearOff.h>\n\n") if $svgListPropertyType =~ /SVGTransformList/; - push(@internalHeaderContent, "#import <WebCore/SVGPathSegListPropertyTearOff.h>\n\n") if $svgListPropertyType =~ /SVGPathSegList/; - } - push(@internalHeaderContent, $interfaceAvailabilityVersionCheck) if length $interfaceAvailabilityVersion; - - if ($interfaceName eq "Node") { - push(@internalHeaderContent, "\@protocol DOMEventTarget;\n\n"); - } - - my $startedNamespace = 0; - - if ($codeGenerator->IsSVGAnimatedType($interfaceName)) { - push(@internalHeaderContent, "#import <WebCore/$implClassName.h>\n\n"); - } else { - push(@internalHeaderContent, "namespace WebCore {\n"); - $startedNamespace = 1; - if ($interfaceName eq "Node") { - push(@internalHeaderContent, " class EventTarget;\n class Node;\n"); - } else { - push(@internalHeaderContent, " class $implClassName;\n"); - } - push(@internalHeaderContent, "}\n\n"); - } - - push(@internalHeaderContent, "$implType* core($className *);\n"); - push(@internalHeaderContent, "$className *kit($implType*);\n"); - - if ($dataNode->extendedAttributes->{Polymorphic}) { - push(@internalHeaderContent, "Class kitClass($implType*);\n"); - } - - if ($interfaceName eq "Node") { - push(@internalHeaderContent, "id <DOMEventTarget> kit(WebCore::EventTarget*);\n"); - } - - push(@internalHeaderContent, "\n#endif\n") if length $interfaceAvailabilityVersion; - } -} - -sub GenerateImplementation -{ - my $object = shift; - my $dataNode = shift; - - my @ancestorInterfaceNames = (); - - if (@{$dataNode->parents} > 1) { - $codeGenerator->AddMethodsConstantsAndAttributesFromParentClasses($dataNode, \@ancestorInterfaceNames); - } - - my $interfaceName = $dataNode->name; - my $className = GetClassName($interfaceName); - my $implClassName = GetImplClassName($interfaceName); - my $parentImplClassName = GetParentImplClassName($dataNode); - my $implClassNameWithNamespace = "WebCore::" . $implClassName; - my $baseClass = GetBaseClass($parentImplClassName); - my $classHeaderName = GetClassHeaderName($className); - - my $numAttributes = @{$dataNode->attributes}; - my $numFunctions = @{$dataNode->functions}; - my $implType = $implClassNameWithNamespace; - - my ($svgPropertyType, $svgListPropertyType, $svgNativeType) = GetSVGPropertyTypes($implClassName); - $implType = $svgNativeType if $svgNativeType; - - # - Add default header template. - @implContentHeader = split("\r", $implementationLicenseTemplate); - - # - INCLUDES - - push(@implContentHeader, "\n#import \"config.h\"\n"); - - my $conditionalString = GenerateConditionalString($dataNode); - push(@implContentHeader, "\n#if ${conditionalString}\n\n") if $conditionalString; - - push(@implContentHeader, "#import \"DOMInternal.h\"\n\n"); - push(@implContentHeader, "#import \"$classHeaderName.h\"\n\n"); - - $implIncludes{"ExceptionHandlers.h"} = 1; - $implIncludes{"ThreadCheck.h"} = 1; - $implIncludes{"JSMainThreadExecState.h"} = 1; - $implIncludes{"WebScriptObjectPrivate.h"} = 1; - $implIncludes{$classHeaderName . "Internal.h"} = 1; - - # FIXME: These includes are only needed when the class is a subclass of one of these polymorphic classes. - $implIncludes{"DOMBlobInternal.h"} = 1; - $implIncludes{"DOMCSSRuleInternal.h"} = 1; - $implIncludes{"DOMCSSValueInternal.h"} = 1; - $implIncludes{"DOMEventInternal.h"} = 1; - $implIncludes{"DOMNodeInternal.h"} = 1; - $implIncludes{"DOMStyleSheetInternal.h"} = 1; - - $implIncludes{"DOMSVGPathSegInternal.h"} = 1 if $interfaceName =~ /^SVGPathSeg.+/; - - if ($interfaceName =~ /(\w+)(Abs|Rel)$/) { - $implIncludes{"$1.h"} = 1; - } else { - if (!$codeGenerator->AvoidInclusionOfType($implClassName)) { - $implIncludes{"$implClassName.h"} = 1 ; - } elsif ($codeGenerator->IsSVGTypeNeedingTearOff($implClassName)) { - my $includeType = $codeGenerator->GetSVGWrappedTypeNeedingTearOff($implClassName); - $implIncludes{"${includeType}.h"} = 1; - } - } - - @implContent = (); - - push(@implContent, "#import <wtf/GetPtr.h>\n\n"); - - # add implementation accessor - if ($parentImplClassName eq "Object") { - push(@implContent, "#define IMPL reinterpret_cast<$implType*>(_internal)\n\n"); - } else { - my $baseClassWithNamespace = "WebCore::$baseClass"; - push(@implContent, "#define IMPL static_cast<$implClassNameWithNamespace*>(reinterpret_cast<$baseClassWithNamespace*>(_internal))\n\n"); - } - - # START implementation - push(@implContent, "\@implementation $className\n\n"); - - # Only generate 'dealloc' and 'finalize' methods for direct subclasses of DOMObject. - if ($parentImplClassName eq "Object") { - $implIncludes{"WebCoreObjCExtras.h"} = 1; - push(@implContent, "- (void)dealloc\n"); - push(@implContent, "{\n"); - push(@implContent, " if (WebCoreObjCScheduleDeallocateOnMainThread([$className class], self))\n"); - push(@implContent, " return;\n"); - push(@implContent, "\n"); - if ($interfaceName eq "NodeIterator") { - push(@implContent, " if (_internal) {\n"); - push(@implContent, " [self detach];\n"); - push(@implContent, " IMPL->deref();\n"); - push(@implContent, " };\n"); - } else { - push(@implContent, " if (_internal)\n"); - push(@implContent, " IMPL->deref();\n"); - } - push(@implContent, " [super dealloc];\n"); - push(@implContent, "}\n\n"); - - push(@implContent, "- (void)finalize\n"); - push(@implContent, "{\n"); - if ($interfaceName eq "NodeIterator") { - push(@implContent, " if (_internal) {\n"); - push(@implContent, " [self detach];\n"); - push(@implContent, " IMPL->deref();\n"); - push(@implContent, " };\n"); - } else { - push(@implContent, " if (_internal)\n"); - push(@implContent, " IMPL->deref();\n"); - } - push(@implContent, " [super finalize];\n"); - push(@implContent, "}\n\n"); - - } - - %attributeNames = (); - - # - Attributes - if ($numAttributes > 0) { - foreach my $attribute (@{$dataNode->attributes}) { - AddIncludesForType($attribute->signature->type); - - my $idlType = $codeGenerator->StripModule($attribute->signature->type); - - my $attributeName = $attribute->signature->name; - my $attributeType = GetObjCType($attribute->signature->type); - my $attributeIsReadonly = ($attribute->type =~ /^readonly/); - my $attributeClassName = GetClassName($attribute->signature->type); - - my $attributeInterfaceName = $attributeName; - if ($attributeName eq "id" or $attributeName eq "hash" or $attributeName eq "description") { - # Special case some attributes (like id and hash) to have a "Name" suffix to avoid ObjC naming conflicts. - $attributeInterfaceName .= "Name"; - } elsif ($attributeName eq "frame") { - # Special case attribute frame to be frameBorders. - $attributeInterfaceName .= "Borders"; - } elsif ($attributeName eq "operator") { - # Avoid clash with C++ keyword. - $attributeInterfaceName = "_operator"; - } - - $attributeNames{$attributeInterfaceName} = 1; - - # - GETTER - my $getterSig = "- ($attributeType)$attributeInterfaceName\n"; - - my $getterExpressionPrefix = $codeGenerator->GetterExpressionPrefix(\%implIncludes, $interfaceName, $attribute); - - # FIXME: Special case attribute ownerDocument to call document. This makes it return the - # document when called on the document itself. Legacy behavior, see <https://bugs.webkit.org/show_bug.cgi?id=10889>. - $getterExpressionPrefix =~ s/\bownerDocument\b/document/; - - my $hasGetterException = @{$attribute->getterExceptions}; - my $getterContentHead = "IMPL->$getterExpressionPrefix"; - my $getterContentTail = ")"; - - if ($svgPropertyType) { - $getterContentHead = "$getterExpressionPrefix"; - - # TODO: Handle special case for DOMSVGLength. We do need Custom code support for this. - if ($svgPropertyType eq "WebCore::SVGLength" and $attributeName eq "value") { - $getterContentHead = "value(IMPL->contextElement(), "; - } - } - - my $attributeTypeSansPtr = $attributeType; - $attributeTypeSansPtr =~ s/ \*$//; # Remove trailing " *" from pointer types. - - # special case for EventTarget protocol - $attributeTypeSansPtr = "DOMNode" if $idlType eq "EventTarget"; - - # Special cases - my @customGetterContent = (); - if ($attributeTypeSansPtr eq "DOMImplementation") { - # FIXME: We have to special case DOMImplementation until DOMImplementationFront is removed - $getterContentHead = "kit(implementationFront(IMPL"; - $getterContentTail .= ")"; - } elsif ($attributeName =~ /(\w+)DisplayString$/) { - my $attributeToDisplay = $1; - $getterContentHead = "WebCore::displayString(IMPL->$attributeToDisplay(), core(self)"; - $implIncludes{"HitTestResult.h"} = 1; - } elsif ($attributeName =~ /^absolute(\w+)URL$/) { - my $typeOfURL = $1; - $getterContentHead = "[self _getURLAttribute:"; - if ($typeOfURL eq "Link") { - $getterContentTail = "\@\"href\"]"; - } elsif ($typeOfURL eq "Image") { - if ($interfaceName eq "HTMLObjectElement") { - $getterContentTail = "\@\"data\"]"; - } else { - $getterContentTail = "\@\"src\"]"; - } - unless ($interfaceName eq "HTMLImageElement") { - push(@customGetterContent, " if (!IMPL->renderer() || !IMPL->renderer()->isImage())\n"); - push(@customGetterContent, " return nil;\n"); - $implIncludes{"RenderObject.h"} = 1; - } - } - $implIncludes{"DOMPrivate.h"} = 1; - } elsif ($attribute->signature->extendedAttributes->{"ConvertToString"}) { - $getterContentHead = "WTF::String::number(" . $getterContentHead; - $getterContentTail .= ")"; - } elsif ($idlType eq "Date") { - $getterContentHead = "kit($getterContentHead"; - $getterContentTail .= ")"; - } elsif ($svgPropertyType) { - # Special case for DOMSVGNumber - if ($svgPropertyType eq "float") { - # Intentional leave out closing brace, it's already contained in getterContentTail - $getterContentHead = "IMPL->propertyReference("; - } else { - $getterContentHead = "IMPL->propertyReference().$getterContentHead"; - } - - if ($codeGenerator->IsSVGTypeWithWritablePropertiesNeedingTearOff($idlType) and not defined $attribute->signature->extendedAttributes->{"Immutable"}) { - my $getter = $getterContentHead; - $getter =~ s/\(\)//; - - my $tearOffType = GetSVGTypeWithNamespace($idlType); - my $selfIsTearOffType = $codeGenerator->IsSVGTypeNeedingTearOff($implClassName); - if ($selfIsTearOffType) { - $implIncludes{"SVGStaticPropertyWithParentTearOff.h"} = 1; - $tearOffType =~ s/SVGPropertyTearOff</SVGStaticPropertyWithParentTearOff<$implClassNameWithNamespace, /; - - my $getter = $getterExpressionPrefix; - $getter =~ s/IMPL->//; - $getter =~ s/\(//; - my $updateMethod = "&${implClassNameWithNamespace}::update" . $codeGenerator->WK_ucfirst($getter); - - if ($getterContentHead =~ /matrix/ and $implClassName eq "SVGTransform") { - # SVGTransform offers a matrix() method for internal usage that returns an AffineTransform - # and a svgMatrix() method returning a SVGMatrix, used for the bindings. - $getterContentHead =~ s/matrix/svgMatrix/; - } - - $getterContentHead = "${tearOffType}::create(IMPL, $getterContentHead$getterContentTail, $updateMethod)"; - - $getterContentHead = "kit(WTF::getPtr($getterContentHead"; - $getterContentTail = "))"; - } - } - } elsif ($codeGenerator->IsSVGAnimatedType($implClassName) and $codeGenerator->IsSVGTypeNeedingTearOff($idlType)) { - my $idlTypeWithNamespace = GetSVGTypeWithNamespace($idlType); - $getterContentHead = "kit(static_cast<$idlTypeWithNamespace*>($getterContentHead)"; - $getterContentTail .= ")"; - } elsif (IsProtocolType($idlType) and $idlType ne "EventTarget") { - $getterContentHead = "kit($getterContentHead"; - $getterContentTail .= ")"; - } elsif ($idlType eq "Color") { - $getterContentHead = "WebCore::nsColor($getterContentHead"; - $getterContentTail .= ")"; - } elsif ($attribute->signature->type eq "SerializedScriptValue") { - $getterContentHead = "$getterContentHead"; - $getterContentTail .= "->toString()"; - } elsif (ConversionNeeded($attribute->signature->type)) { - my $type = $attribute->signature->type; - if ($codeGenerator->IsSVGTypeNeedingTearOff($type) and not $implClassName =~ /List$/) { - my $idlTypeWithNamespace = GetSVGTypeWithNamespace($type); - $implIncludes{"$type.h"} = 1 if not $codeGenerator->AvoidInclusionOfType($type); - if ($codeGenerator->IsSVGTypeWithWritablePropertiesNeedingTearOff($type) and not defined $attribute->signature->extendedAttributes->{"Immutable"}) { - $idlTypeWithNamespace =~ s/SVGPropertyTearOff</SVGStaticPropertyTearOff<$implClassNameWithNamespace, /; - $implIncludes{"SVGStaticPropertyTearOff.h"} = 1; - - my $getter = $getterContentHead; - $getter =~ s/IMPL->//; - $getter =~ s/\(//; - my $updateMethod = "&${implClassNameWithNamespace}::update" . $codeGenerator->WK_ucfirst($getter); - $getterContentHead = "kit(WTF::getPtr(${idlTypeWithNamespace}::create(IMPL, $getterContentHead$getterContentTail, $updateMethod"; - $getterContentTail .= "))"; - } elsif ($idlTypeWithNamespace =~ /SVG(Point|PathSeg)List/) { - $getterContentHead = "kit(WTF::getPtr($getterContentHead"; - $getterContentTail .= "))"; - } elsif ($idlTypeWithNamespace =~ /SVGStaticListPropertyTearOff/) { - my $extraImp = "WebCore::GetOwnerElementForType<$implClassNameWithNamespace, WebCore::IsDerivedFromSVGElement<$implClassNameWithNamespace>::value>::ownerElement(IMPL), "; - $getterContentHead = "kit(WTF::getPtr(${idlTypeWithNamespace}::create($extraImp$getterContentHead"; - $getterContentTail .= ")))"; - } else { - $getterContentHead = "kit(WTF::getPtr(${idlTypeWithNamespace}::create($getterContentHead"; - $getterContentTail .= ")))"; - } - } else { - $getterContentHead = "kit(WTF::getPtr($getterContentHead"; - $getterContentTail .= "))"; - } - } - - my $getterContent; - if ($hasGetterException) { - $getterContent = $getterContentHead . "ec" . $getterContentTail; - } else { - $getterContent = $getterContentHead . $getterContentTail; - } - - my $attributeConditionalString = GenerateConditionalString($attribute->signature); - push(@implContent, "#if ${attributeConditionalString}\n") if $attributeConditionalString; - push(@implContent, $getterSig); - push(@implContent, "{\n"); - push(@implContent, " $jsContextSetter\n"); - push(@implContent, @customGetterContent); - if ($hasGetterException) { - # Differentiated between when the return type is a pointer and - # not for white space issue (ie. Foo *result vs. int result). - if ($attributeType =~ /\*$/) { - $getterContent = $attributeType . "result = " . $getterContent; - } else { - $getterContent = $attributeType . " result = " . $getterContent; - } - - push(@implContent, " $exceptionInit\n"); - push(@implContent, " $getterContent;\n"); - push(@implContent, " $exceptionRaiseOnError\n"); - push(@implContent, " return result;\n"); - } else { - push(@implContent, " return $getterContent;\n"); - } - push(@implContent, "}\n"); - - # - SETTER - if (!$attributeIsReadonly) { - # Exception handling - my $hasSetterException = @{$attribute->setterExceptions}; - - my $coreSetterName = "set" . $codeGenerator->WK_ucfirst($attributeName); - my $setterName = "set" . ucfirst($attributeInterfaceName); - my $argName = "new" . ucfirst($attributeInterfaceName); - my $arg = GetObjCTypeGetter($argName, $idlType); - - # The definition of ConvertToString is flipped for the setter - if ($attribute->signature->extendedAttributes->{"ConvertToString"}) { - $arg = "WTF::String($arg).toInt()"; - } - - my $setterSig = "- (void)$setterName:($attributeType)$argName\n"; - - push(@implContent, "\n"); - push(@implContent, $setterSig); - push(@implContent, "{\n"); - push(@implContent, " $jsContextSetter\n"); - - unless ($codeGenerator->IsPrimitiveType($idlType) or $codeGenerator->IsStringType($idlType)) { - push(@implContent, " ASSERT($argName);\n\n"); - } - - if ($idlType eq "Date") { - $arg = "core(" . $arg . ")"; - } - - if ($svgPropertyType) { - $getterContentHead = "$getterExpressionPrefix"; - push(@implContent, " if (IMPL->role() == WebCore::AnimValRole) {\n"); - push(@implContent, " WebCore::raiseOnDOMError(WebCore::NO_MODIFICATION_ALLOWED_ERR);\n"); - push(@implContent, " return;\n"); - push(@implContent, " }\n"); - push(@implContent, " $svgPropertyType& podImpl = IMPL->propertyReference();\n"); - my $ec = $hasSetterException ? ", ec" : ""; - push(@implContent, " $exceptionInit\n") if $hasSetterException; - - # Special case for DOMSVGNumber - if ($svgPropertyType eq "float") { - push(@implContent, " podImpl = $arg;\n"); - } else { - # FIXME: Special case for DOMSVGLength. We do need Custom code support for this. - if ($svgPropertyType eq "WebCore::SVGLength" and $attributeName eq "value") { - push(@implContent, " podImpl.$coreSetterName($arg, IMPL->contextElement()$ec);\n"); - } else { - push(@implContent, " podImpl.$coreSetterName($arg$ec);\n"); - } - } - - if ($hasSetterException) { - push(@implContent, " if (!ec)\n"); - push(@implContent, " IMPL->commitChange();\n"); - push(@implContent, " $exceptionRaiseOnError\n"); - } else { - push(@implContent, " IMPL->commitChange();\n"); - } - } elsif ($svgListPropertyType) { - $getterContentHead = "$getterExpressionPrefix"; - push(@implContent, " IMPL->$coreSetterName($arg);\n"); - } else { - my $setterExpressionPrefix = $codeGenerator->SetterExpressionPrefix(\%implIncludes, $interfaceName, $attribute); - my $ec = $hasSetterException ? ", ec" : ""; - push(@implContent, " $exceptionInit\n") if $hasSetterException; - push(@implContent, " IMPL->$setterExpressionPrefix$arg$ec);\n"); - push(@implContent, " $exceptionRaiseOnError\n") if $hasSetterException; - } - - push(@implContent, "}\n"); - } - - push(@implContent, "#endif\n") if $attributeConditionalString; - push(@implContent, "\n"); - } - } - - # - Functions - if ($numFunctions > 0) { - foreach my $function (@{$dataNode->functions}) { - AddIncludesForType($function->signature->type); - - my $functionName = $function->signature->name; - my $returnType = GetObjCType($function->signature->type); - my $hasParameters = @{$function->parameters}; - my $raisesExceptions = @{$function->raisesExceptions}; - - my @parameterNames = (); - my @needsAssert = (); - my %needsCustom = (); - - my $parameterIndex = 0; - my $functionSig = "- ($returnType)$functionName"; - foreach my $param (@{$function->parameters}) { - my $paramName = $param->name; - my $paramType = GetObjCType($param->type); - - # make a new parameter name if the original conflicts with a property name - $paramName = "in" . ucfirst($paramName) if $attributeNames{$paramName}; - - AddIncludesForType($param->type); - - my $idlType = $codeGenerator->StripModule($param->type); - my $implGetter = GetObjCTypeGetter($paramName, $idlType); - - push(@parameterNames, $implGetter); - $needsCustom{"XPathNSResolver"} = $paramName if $idlType eq "XPathNSResolver"; - $needsCustom{"NodeFilter"} = $paramName if $idlType eq "NodeFilter"; - $needsCustom{"EventListener"} = $paramName if $idlType eq "EventListener"; - $needsCustom{"EventTarget"} = $paramName if $idlType eq "EventTarget"; - $needsCustom{"NodeToReturn"} = $paramName if $param->extendedAttributes->{"Return"}; - - unless ($codeGenerator->IsPrimitiveType($idlType) or $codeGenerator->IsStringType($idlType)) { - push(@needsAssert, " ASSERT($paramName);\n"); - } - - if ($parameterIndex >= 1) { - my $paramPrefix = $param->extendedAttributes->{"ObjCPrefix"}; - $paramPrefix = $param->name unless defined($paramPrefix); - $functionSig .= " $paramPrefix"; - } - - $functionSig .= ":($paramType)$paramName"; - - $parameterIndex++; - } - - my @functionContent = (); - my $caller = "IMPL"; - - # special case the XPathNSResolver - if (defined $needsCustom{"XPathNSResolver"}) { - my $paramName = $needsCustom{"XPathNSResolver"}; - push(@functionContent, " WebCore::XPathNSResolver* nativeResolver = 0;\n"); - push(@functionContent, " RefPtr<WebCore::XPathNSResolver> customResolver;\n"); - push(@functionContent, " if ($paramName) {\n"); - push(@functionContent, " if ([$paramName isMemberOfClass:[DOMNativeXPathNSResolver class]])\n"); - push(@functionContent, " nativeResolver = core(static_cast<DOMNativeXPathNSResolver *>($paramName));\n"); - push(@functionContent, " else {\n"); - push(@functionContent, " customResolver = WebCore::DOMCustomXPathNSResolver::create($paramName);\n"); - push(@functionContent, " nativeResolver = WTF::getPtr(customResolver);\n"); - push(@functionContent, " }\n"); - push(@functionContent, " }\n"); - } - - # special case the EventTarget - if (defined $needsCustom{"EventTarget"}) { - my $paramName = $needsCustom{"EventTarget"}; - push(@functionContent, " DOMNode* ${paramName}ObjC = $paramName;\n"); - push(@functionContent, " WebCore::Node* ${paramName}Node = core(${paramName}ObjC);\n"); - $implIncludes{"DOMNode.h"} = 1; - $implIncludes{"Node.h"} = 1; - } - - if ($function->signature->extendedAttributes->{"UsesView"}) { - push(@functionContent, " WebCore::DOMWindow* dv = $caller->defaultView();\n"); - push(@functionContent, " if (!dv)\n"); - push(@functionContent, " return nil;\n"); - $implIncludes{"DOMWindow.h"} = 1; - $caller = "dv"; - } - - # special case the EventListener - if (defined $needsCustom{"EventListener"}) { - my $paramName = $needsCustom{"EventListener"}; - push(@functionContent, " RefPtr<WebCore::EventListener> nativeEventListener = WebCore::ObjCEventListener::wrap($paramName);\n"); - } - - # special case the NodeFilter - if (defined $needsCustom{"NodeFilter"}) { - my $paramName = $needsCustom{"NodeFilter"}; - push(@functionContent, " RefPtr<WebCore::NodeFilter> nativeNodeFilter;\n"); - push(@functionContent, " if ($paramName)\n"); - push(@functionContent, " nativeNodeFilter = WebCore::NodeFilter::create(WebCore::ObjCNodeFilterCondition::create($paramName));\n"); - } - - # FIXME! We need [Custom] support for ObjC, to move these hacks into DOMSVGLength/MatrixCustom.mm - my $svgLengthConvertToSpecifiedUnits = ($svgPropertyType and $svgPropertyType eq "WebCore::SVGLength" and $functionName eq "convertToSpecifiedUnits"); - - push(@parameterNames, "IMPL->contextElement()") if $svgLengthConvertToSpecifiedUnits; - push(@parameterNames, "ec") if $raisesExceptions; - - # Handle arguments that are 'SVGProperty' based (SVGAngle/SVGLength). We need to convert from SVGPropertyTearOff<Type>* to Type, - # to be able to call the desired WebCore function. If the conversion fails, we can't extract Type and need to raise an exception. - my $currentParameter = -1; - foreach my $param (@{$function->parameters}) { - $currentParameter++; - - my $paramName = $param->name; - - # make a new parameter name if the original conflicts with a property name - $paramName = "in" . ucfirst($paramName) if $attributeNames{$paramName}; - - my $idlType = $codeGenerator->StripModule($param->type); - next if not $codeGenerator->IsSVGTypeNeedingTearOff($idlType) or $implClassName =~ /List$/; - - my $implGetter = GetObjCTypeGetter($paramName, $idlType); - my $idlTypeWithNamespace = GetSVGTypeWithNamespace($idlType); - - push(@functionContent, " $idlTypeWithNamespace* ${paramName}Core = $implGetter;\n"); - push(@functionContent, " if (!${paramName}Core) {\n"); - push(@functionContent, " WebCore::ExceptionCode ec = WebCore::TYPE_MISMATCH_ERR;\n"); - push(@functionContent, " $exceptionRaiseOnError\n"); - if ($returnType eq "void") { - push(@functionContent, " return;\n"); - } else { - push(@functionContent, " return nil;\n"); - } - push(@functionContent, " }\n"); - - # Replace the paramter core() getter, by the cached variable. - splice(@parameterNames, $currentParameter, 1, "${paramName}Core->propertyReference()"); - } - - my $content = $codeGenerator->WK_lcfirst($functionName) . "(" . join(", ", @parameterNames) . ")"; - - if ($svgPropertyType) { - push(@functionContent, " if (IMPL->role() == WebCore::AnimValRole) {\n"); - push(@functionContent, " WebCore::raiseOnDOMError(WebCore::NO_MODIFICATION_ALLOWED_ERR);\n"); - if ($returnType eq "void") { - push(@functionContent, " return;\n"); - } else { - push(@functionContent, " return nil;\n"); - } - push(@functionContent, " }\n"); - push(@functionContent, " $svgPropertyType& podImpl = IMPL->propertyReference();\n"); - $content = "podImpl.$content"; - } else { - $content = $caller . "->$content"; - } - - if ($returnType eq "void") { - # Special case 'void' return type. - if ($raisesExceptions) { - push(@functionContent, " $exceptionInit\n"); - push(@functionContent, " $content;\n"); - if ($svgPropertyType) { - push(@functionContent, " if (!ec)\n"); - push(@functionContent, " IMPL->commitChange();\n"); - } - push(@functionContent, " $exceptionRaiseOnError\n"); - } else { - push(@functionContent, " $content;\n"); - push(@functionContent, " IMPL->commitChange();\n") if $svgPropertyType; - } - } elsif (defined $needsCustom{"NodeToReturn"}) { - # Special case the insertBefore, replaceChild, removeChild - # and appendChild functions from DOMNode - my $toReturn = $needsCustom{"NodeToReturn"}; - if ($raisesExceptions) { - push(@functionContent, " $exceptionInit\n"); - push(@functionContent, " if ($content)\n"); - push(@functionContent, " return $toReturn;\n"); - push(@functionContent, " $exceptionRaiseOnError\n"); - push(@functionContent, " return nil;\n"); - } else { - push(@functionContent, " if ($content)\n"); - push(@functionContent, " return $toReturn;\n"); - push(@functionContent, " return nil;\n"); - } - } elsif ($returnType eq "SerializedScriptValue") { - $content = "foo"; - } else { - if (ConversionNeeded($function->signature->type)) { - if ($codeGenerator->IsSVGTypeNeedingTearOff($function->signature->type) and not $implClassName =~ /List$/) { - my $idlTypeWithNamespace = GetSVGTypeWithNamespace($function->signature->type); - $content = "kit(WTF::getPtr(${idlTypeWithNamespace}::create($content)))"; - } else { - $content = "kit(WTF::getPtr($content))"; - } - } - - if ($raisesExceptions) { - # Differentiated between when the return type is a pointer and - # not for white space issue (ie. Foo *result vs. int result). - if ($returnType =~ /\*$/) { - $content = $returnType . "result = " . $content; - } else { - $content = $returnType . " result = " . $content; - } - - push(@functionContent, " $exceptionInit\n"); - push(@functionContent, " $content;\n"); - push(@functionContent, " $exceptionRaiseOnError\n"); - push(@functionContent, " return result;\n"); - } else { - push(@functionContent, " return $content;\n"); - } - } - - push(@implContent, "$functionSig\n"); - push(@implContent, "{\n"); - push(@implContent, " $jsContextSetter\n"); - push(@implContent, @functionContent); - push(@implContent, "}\n\n"); - - # generate the old style method names with un-named parameters, these methods are deprecated - if (@{$function->parameters} > 1 and $function->signature->extendedAttributes->{"OldStyleObjC"}) { - my $deprecatedFunctionSig = $functionSig; - $deprecatedFunctionSig =~ s/\s\w+:/ :/g; # remove parameter names - - push(@implContent, "$deprecatedFunctionSig\n"); - push(@implContent, "{\n"); - push(@implContent, " $jsContextSetter\n"); - push(@implContent, @functionContent); - push(@implContent, "}\n\n"); - } - - # Clear the hash - %needsCustom = (); - } - } - - # END implementation - push(@implContent, "\@end\n"); - - # Generate internal interfaces - push(@implContent, "\n$implType* core($className *wrapper)\n"); - push(@implContent, "{\n"); - push(@implContent, " return wrapper ? reinterpret_cast<$implType*>(wrapper->_internal) : 0;\n"); - push(@implContent, "}\n\n"); - - if ($parentImplClassName eq "Object") { - push(@implContent, "$className *kit($implType* value)\n"); - push(@implContent, "{\n"); - push(@implContent, " $assertMainThread;\n"); - push(@implContent, " if (!value)\n"); - push(@implContent, " return nil;\n"); - push(@implContent, " if ($className *wrapper = getDOMWrapper(value))\n"); - push(@implContent, " return [[wrapper retain] autorelease];\n"); - if ($dataNode->extendedAttributes->{Polymorphic}) { - push(@implContent, " $className *wrapper = [[kitClass(value) alloc] _init];\n"); - push(@implContent, " if (!wrapper)\n"); - push(@implContent, " return nil;\n"); - } else { - push(@implContent, " $className *wrapper = [[$className alloc] _init];\n"); - } - push(@implContent, " wrapper->_internal = reinterpret_cast<DOMObjectInternal*>(value);\n"); - push(@implContent, " value->ref();\n"); - push(@implContent, " addDOMWrapper(wrapper, value);\n"); - push(@implContent, " return [wrapper autorelease];\n"); - push(@implContent, "}\n"); - } else { - push(@implContent, "$className *kit($implType* value)\n"); - push(@implContent, "{\n"); - push(@implContent, " $assertMainThread;\n"); - push(@implContent, " return static_cast<$className*>(kit(static_cast<WebCore::$baseClass*>(value)));\n"); - push(@implContent, "}\n"); - } - - # - End the ifdef conditional if necessary - push(@implContent, "\n#endif // ${conditionalString}\n") if $conditionalString; - - # - Generate dependencies. - if ($writeDependencies && @ancestorInterfaceNames) { - push(@depsContent, "$className.h : ", join(" ", map { "$_.idl" } @ancestorInterfaceNames), "\n"); - push(@depsContent, map { "$_.idl :\n" } @ancestorInterfaceNames); - } -} - -# Internal helper -sub WriteData -{ - my $object = shift; - my $name = shift; - - # Open files for writing... - my $headerFileName = "$outputDir/" . $name . ".h"; - my $privateHeaderFileName = "$outputDir/" . $name . "Private.h"; - my $implFileName = "$outputDir/" . $name . ".mm"; - my $internalHeaderFileName = "$outputDir/" . $name . "Internal.h"; - my $depsFileName = "$outputDir/" . $name . ".dep"; - - # Remove old files. - unlink($headerFileName); - unlink($privateHeaderFileName); - unlink($implFileName); - unlink($internalHeaderFileName); - unlink($depsFileName); - - # Write public header. - open(HEADER, ">$headerFileName") or die "Couldn't open file $headerFileName"; - - print HEADER @headerContentHeader; - print HEADER map { "\@class $_;\n" } sort keys(%headerForwardDeclarations); - print HEADER map { "\@protocol $_;\n" } sort keys(%headerForwardDeclarationsForProtocols); - - my $hasForwardDeclarations = keys(%headerForwardDeclarations) + keys(%headerForwardDeclarationsForProtocols); - print HEADER "\n" if $hasForwardDeclarations; - print HEADER @headerContent; - - close(HEADER); - - @headerContentHeader = (); - @headerContent = (); - %headerForwardDeclarations = (); - %headerForwardDeclarationsForProtocols = (); - - if (@privateHeaderContent > 0) { - open(PRIVATE_HEADER, ">$privateHeaderFileName") or die "Couldn't open file $privateHeaderFileName"; - - print PRIVATE_HEADER @privateHeaderContentHeader; - print PRIVATE_HEADER map { "\@class $_;\n" } sort keys(%privateHeaderForwardDeclarations); - print PRIVATE_HEADER map { "\@protocol $_;\n" } sort keys(%privateHeaderForwardDeclarationsForProtocols); - - $hasForwardDeclarations = keys(%privateHeaderForwardDeclarations) + keys(%privateHeaderForwardDeclarationsForProtocols); - print PRIVATE_HEADER "\n" if $hasForwardDeclarations; - print PRIVATE_HEADER @privateHeaderContent; - - close(PRIVATE_HEADER); - - @privateHeaderContentHeader = (); - @privateHeaderContent = (); - %privateHeaderForwardDeclarations = (); - %privateHeaderForwardDeclarationsForProtocols = (); - } - - # Write implementation file. - unless ($noImpl) { - open(IMPL, ">$implFileName") or die "Couldn't open file $implFileName"; - - print IMPL @implContentHeader; - print IMPL map { "#import \"$_\"\n" } sort keys(%implIncludes); - print IMPL @implContent; - - close(IMPL); - - @implContentHeader = (); - @implContent = (); - %implIncludes = (); - } - - if (@internalHeaderContent > 0) { - open(INTERNAL_HEADER, ">$internalHeaderFileName") or die "Couldn't open file $internalHeaderFileName"; - - print INTERNAL_HEADER @internalHeaderContent; - - close(INTERNAL_HEADER); - - @internalHeaderContent = (); - } - - # Write dependency file. - if (@depsContent) { - open(DEPS, ">$depsFileName") or die "Couldn't open file $depsFileName"; - print DEPS @depsContent; - close(DEPS); - @depsContent = (); - } -} - -1; diff --git a/WebCore/bindings/scripts/CodeGeneratorV8.pm b/WebCore/bindings/scripts/CodeGeneratorV8.pm deleted file mode 100644 index f50e74a..0000000 --- a/WebCore/bindings/scripts/CodeGeneratorV8.pm +++ /dev/null @@ -1,3251 +0,0 @@ -# Copyright (C) 2005, 2006 Nikolas Zimmermann <zimmermann@kde.org> -# Copyright (C) 2006 Anders Carlsson <andersca@mac.com> -# Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com> -# Copyright (C) 2006 Alexey Proskuryakov <ap@webkit.org> -# Copyright (C) 2006 Apple Computer, Inc. -# Copyright (C) 2007, 2008, 2009 Google Inc. -# Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au> -# Copyright (C) Research In Motion Limited 2010. All rights reserved. -# Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public -# License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. -# -# You should have received a copy of the GNU Library General Public License -# along with this library; see the file COPYING.LIB. If not, write to -# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. -# - -package CodeGeneratorV8; - -use Digest::MD5; - -my $module = ""; -my $outputDir = ""; -my $outputHeadersDir = ""; - -my @headerContent = (); -my @implContentHeader = (); -my @implFixedHeader = (); -my @implContent = (); -my @implContentDecls = (); -my %implIncludes = (); -my %headerIncludes = (); - -my @allParents = (); - -# Default .h template -my $headerTemplate = << "EOF"; -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ -EOF - -# Default constructor -sub new -{ - my $object = shift; - my $reference = { }; - - $codeGenerator = shift; - $outputDir = shift; - $outputHeadersDir = shift; - - bless($reference, $object); - return $reference; -} - -sub finish -{ - my $object = shift; - - # Commit changes! - $object->WriteData(); -} - -# Params: 'domClass' struct -sub GenerateInterface -{ - my $object = shift; - my $dataNode = shift; - my $defines = shift; - - # Start actual generation - if ($dataNode->extendedAttributes->{"Callback"}) { - $object->GenerateCallbackHeader($dataNode); - $object->GenerateCallbackImplementation($dataNode); - } else { - $object->GenerateHeader($dataNode); - $object->GenerateImplementation($dataNode); - } - - my $name = $dataNode->name; - - # Open files for writing - my $headerFileName = "$outputHeadersDir/V8$name.h"; - my $implFileName = "$outputDir/V8$name.cpp"; - - open($IMPL, ">$implFileName") || die "Couldn't open file $implFileName"; - open($HEADER, ">$headerFileName") || die "Couldn't open file $headerFileName"; -} - -# Params: 'idlDocument' struct -sub GenerateModule -{ - my $object = shift; - my $dataNode = shift; - - $module = $dataNode->module; -} - -sub AddIncludesForType -{ - my $type = $codeGenerator->StripModule(shift); - - # When we're finished with the one-file-per-class - # reorganization, we won't need these special cases. - if (!$codeGenerator->IsPrimitiveType($type) and !$codeGenerator->AvoidInclusionOfType($type) and $type ne "Date") { - # default, include the same named file - $implIncludes{GetV8HeaderName(${type})} = 1; - - if ($type =~ /SVGPathSeg/) { - $joinedName = $type; - $joinedName =~ s/Abs|Rel//; - $implIncludes{"${joinedName}.h"} = 1; - } - } - - # additional includes (things needed to compile the bindings but not the header) - - if ($type eq "CanvasRenderingContext2D") { - $implIncludes{"CanvasGradient.h"} = 1; - $implIncludes{"CanvasPattern.h"} = 1; - $implIncludes{"CanvasStyle.h"} = 1; - } - - if ($type eq "CanvasGradient" or $type eq "XPathNSResolver") { - $implIncludes{"PlatformString.h"} = 1; - } - - if ($type eq "CSSStyleDeclaration") { - $implIncludes{"CSSMutableStyleDeclaration.h"} = 1; - } - - if ($type eq "Plugin" or $type eq "PluginArray" or $type eq "MimeTypeArray") { - # So we can get String -> AtomicString conversion for namedItem(). - $implIncludes{"wtf/text/AtomicString.h"} = 1; - } -} - -# If the node has a [Conditional=XXX] attribute, returns an "ENABLE(XXX)" string for use in an #if. -sub GenerateConditionalString -{ - my $node = shift; - my $conditional = $node->extendedAttributes->{"Conditional"}; - if ($conditional) { - if ($conditional =~ /&/) { - return "ENABLE(" . join(") && ENABLE(", split(/&/, $conditional)) . ")"; - } elsif ($conditional =~ /\|/) { - return "ENABLE(" . join(") || ENABLE(", split(/\|/, $conditional)) . ")"; - } else { - return "ENABLE(" . $conditional . ")"; - } - } else { - return ""; - } -} - -sub GetSVGPropertyTypes -{ - my $implType = shift; - - my $svgPropertyType; - my $svgListPropertyType; - my $svgNativeType; - - return ($svgPropertyType, $svgListPropertyType, $svgNativeType) if not $implType =~ /SVG/; - - $svgNativeType = $codeGenerator->GetSVGTypeNeedingTearOff($implType); - return ($svgPropertyType, $svgListPropertyType, $svgNativeType) if not $svgNativeType; - - # Append space to avoid compilation errors when using PassRefPtr<$svgNativeType> - $svgNativeType = "$svgNativeType "; - - my $svgWrappedNativeType = $codeGenerator->GetSVGWrappedTypeNeedingTearOff($implType); - if ($svgNativeType =~ /SVGPropertyTearOff/) { - $svgPropertyType = $svgWrappedNativeType; - $implIncludes{"SVGAnimatedPropertyTearOff.h"} = 1; - } elsif ($svgNativeType =~ /SVGListPropertyTearOff/ or $svgNativeType =~ /SVGStaticListPropertyTearOff/) { - $svgListPropertyType = $svgWrappedNativeType; - $headerIncludes{"SVGAnimatedListPropertyTearOff.h"} = 1; - $headerIncludes{"SVGStaticListPropertyTearOff.h"} = 1; - } elsif ($svgNativeType =~ /SVGTransformListPropertyTearOff/) { - $svgListPropertyType = $svgWrappedNativeType; - $headerIncludes{"SVGAnimatedListPropertyTearOff.h"} = 1; - $headerIncludes{"SVGTransformListPropertyTearOff.h"} = 1; - } elsif ($svgNativeType =~ /SVGPathSegListPropertyTearOff/) { - $svgListPropertyType = $svgWrappedNativeType; - $headerIncludes{"SVGPathSegListPropertyTearOff.h"} = 1; - } - - if ($svgPropertyType) { - $svgPropertyType = "SVGPoint" if $svgPropertyType eq "FloatPoint"; - } - - return ($svgPropertyType, $svgListPropertyType, $svgNativeType); -} - -sub GenerateHeader -{ - my $object = shift; - my $dataNode = shift; - - my $interfaceName = $dataNode->name; - my $className = "V8$interfaceName"; - my $implClassName = $interfaceName; - - # Copy contents of parent classes except the first parent or if it is - # EventTarget. - $codeGenerator->AddMethodsConstantsAndAttributesFromParentClasses($dataNode, \@allParents, 1); - - my $hasLegacyParent = $dataNode->extendedAttributes->{"LegacyParent"}; - - # - Add default header template - push(@headerContent, GenerateHeaderContentHeader($dataNode)); - - $headerIncludes{"wtf/text/StringHash.h"} = 1; - $headerIncludes{"WrapperTypeInfo.h"} = 1; - $headerIncludes{"V8DOMWrapper.h"} = 1; - - my $headerClassInclude = GetHeaderClassInclude($implClassName); - $headerIncludes{$headerClassInclude} = 1 if $headerClassInclude ne ""; - - my ($svgPropertyType, $svgListPropertyType, $svgNativeType) = GetSVGPropertyTypes($implClassName); - - foreach my $headerInclude (sort keys(%headerIncludes)) { - push(@headerContent, "#include \"${headerInclude}\"\n"); - } - - push(@headerContent, "#include <v8.h>\n"); - push(@headerContent, "#include <wtf/HashMap.h>\n"); - - push(@headerContent, "\nnamespace WebCore {\n"); - push(@headerContent, "\ntemplate<typename PropertyType> class SVGPropertyTearOff;\n") if $svgPropertyType; - if ($svgNativeType) { - if ($svgNativeType =~ /SVGStaticListPropertyTearOff/) { - push(@headerContent, "\ntemplate<typename PropertyType> class SVGStaticListPropertyTearOff;\n"); - } else { - push(@headerContent, "\ntemplate<typename PropertyType> class SVGListPropertyTearOff;\n"); - } - } - push(@headerContent, "\nclass FloatRect;\n") if $svgPropertyType && $svgPropertyType eq "FloatRect"; - push(@headerContent, "\nclass $className {\n"); - - my $nativeType = GetNativeTypeForConversions($dataNode, $interfaceName); - my $domMapFunction = GetDomMapFunction($dataNode, $interfaceName); - my $forceNewObjectParameter = IsDOMNodeType($interfaceName) ? ", bool forceNewObject = false" : ""; - my $forceNewObjectInput = IsDOMNodeType($interfaceName) ? ", bool forceNewObject" : ""; - my $forceNewObjectCall = IsDOMNodeType($interfaceName) ? ", forceNewObject" : ""; - - push(@headerContent, <<END); - -public: - static bool HasInstance(v8::Handle<v8::Value> value); - static v8::Persistent<v8::FunctionTemplate> GetRawTemplate(); - static v8::Persistent<v8::FunctionTemplate> GetTemplate(); - static ${nativeType}* toNative(v8::Handle<v8::Object> object) - { - return reinterpret_cast<${nativeType}*>(object->GetPointerFromInternalField(v8DOMWrapperObjectIndex)); - } - inline static v8::Handle<v8::Object> wrap(${nativeType}*${forceNewObjectParameter}); - static void derefObject(void*); - static WrapperTypeInfo info; -END - if (IsActiveDomType($implClassName)) { - push(@headerContent, " static ActiveDOMObject* toActiveDOMObject(v8::Handle<v8::Object>);\n"); - } - - if ($implClassName eq "DOMWindow") { - push(@headerContent, <<END); - static v8::Persistent<v8::ObjectTemplate> GetShadowObjectTemplate(); -END - } - - if ($implClassName eq "HTMLDocument") { - push(@headerContent, <<END); - static v8::Local<v8::Object> WrapInShadowObject(v8::Local<v8::Object> wrapper, Node* impl); - static v8::Handle<v8::Value> GetNamedProperty(HTMLDocument* htmlDocument, const AtomicString& key); -END - } - - my @enabledAtRuntime; - foreach my $function (@{$dataNode->functions}) { - my $name = $function->signature->name; - my $attrExt = $function->signature->extendedAttributes; - - if ($attrExt->{"Custom"} || $attrExt->{"V8Custom"}) { - push(@headerContent, <<END); - static v8::Handle<v8::Value> ${name}Callback(const v8::Arguments&); -END - } - - if ($attrExt->{"EnabledAtRuntime"}) { - push(@enabledAtRuntime, $function); - } - } - - if ($dataNode->extendedAttributes->{"CustomConstructor"} || $dataNode->extendedAttributes->{"V8CustomConstructor"} || $dataNode->extendedAttributes->{"CanBeConstructed"}) { - push(@headerContent, <<END); - static v8::Handle<v8::Value> constructorCallback(const v8::Arguments& args); -END - } - - foreach my $attribute (@{$dataNode->attributes}) { - my $name = $attribute->signature->name; - my $attrExt = $attribute->signature->extendedAttributes; - if ($attrExt->{"V8CustomGetter"} || $attrExt->{"CustomGetter"} - || $attrExt->{"V8Custom"} || $attrExt->{"Custom"}) { - push(@headerContent, <<END); - static v8::Handle<v8::Value> ${name}AccessorGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info); -END - } - if ($attrExt->{"V8CustomSetter"} || $attrExt->{"CustomSetter"} - || $attrExt->{"V8Custom"} || $attrExt->{"Custom"}) { - push(@headerContent, <<END); - static void ${name}AccessorSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info); -END - } - if ($attrExt->{"EnabledAtRuntime"}) { - push(@enabledAtRuntime, $attribute); - } - } - - GenerateHeaderNamedAndIndexedPropertyAccessors($dataNode); - GenerateHeaderCustomCall($dataNode); - GenerateHeaderCustomInternalFieldIndices($dataNode); - - if ($dataNode->extendedAttributes->{"CheckDomainSecurity"}) { - push(@headerContent, <<END); - static bool namedSecurityCheck(v8::Local<v8::Object> host, v8::Local<v8::Value> key, v8::AccessType, v8::Local<v8::Value> data); - static bool indexedSecurityCheck(v8::Local<v8::Object> host, uint32_t index, v8::AccessType, v8::Local<v8::Value> data); -END - } - - push(@headerContent, <<END); -private: - static v8::Handle<v8::Object> wrapSlow(${nativeType}*); -}; - -END - - push(@headerContent, <<END); - -v8::Handle<v8::Object> ${className}::wrap(${nativeType}* impl${forceNewObjectInput}) -{ -END - if ($domMapFunction) { - push(@headerContent, " if (!forceNewObject) {\n") if IsDOMNodeType($interfaceName); - my $getWrapper = IsNodeSubType($dataNode) ? "V8DOMWrapper::getWrapper(impl)" : "${domMapFunction}.get(impl)"; - push(@headerContent, <<END); - v8::Handle<v8::Object> wrapper = ${getWrapper}; - if (!wrapper.IsEmpty()) - return wrapper; -END - push(@headerContent, " }\n") if IsDOMNodeType($interfaceName); - } - push(@headerContent, <<END); - return ${className}::wrapSlow(impl); -} -END - - if (!HasCustomToV8Implementation($dataNode, $interfaceName)) { - push(@headerContent, <<END); - -inline v8::Handle<v8::Value> toV8(${nativeType}* impl${forceNewObjectParameter}) -{ - if (!impl) - return v8::Null(); - return ${className}::wrap(impl${forceNewObjectCall}); -} -END - } elsif ($interfaceName ne 'Node') { - push(@headerContent, <<END); - -v8::Handle<v8::Value> toV8(${nativeType}*${forceNewObjectParameter}); -END - } else { - push(@headerContent, <<END); - -v8::Handle<v8::Value> toV8Slow(Node*, bool); - -inline v8::Handle<v8::Value> toV8(Node* impl, bool forceNewObject = false) -{ - if (!impl) - return v8::Null(); - if (!forceNewObject) { - v8::Handle<v8::Value> wrapper = V8DOMWrapper::getWrapper(impl); - if (!wrapper.IsEmpty()) - return wrapper; - } - return toV8Slow(impl, forceNewObject); -} -END - } - - if (IsRefPtrType($implClassName)) { - push(@headerContent, <<END); -inline v8::Handle<v8::Value> toV8(PassRefPtr< ${nativeType} > impl${forceNewObjectParameter}) -{ - return toV8(impl.get()${forceNewObjectCall}); -} -END - } - - push(@headerContent, "}\n\n"); - push(@headerContent, "#endif // $className" . "_h\n"); - - my $conditionalString = GenerateConditionalString($dataNode); - push(@headerContent, "#endif // ${conditionalString}\n\n") if $conditionalString; -} - -sub GetInternalFields -{ - my $dataNode = shift; - my $name = $dataNode->name; - - my @customInternalFields = (); - - # We can't ask whether a parent type has a given extendedAttribute, so special-case Node, AbstractWorker and WorkerContext to include all sub-types. - # FIXME: SVGElementInstance should probably have the EventTarget extended attribute, but doesn't. - if ($dataNode->extendedAttributes->{"EventTarget"} || IsNodeSubType($dataNode) || IsSubType($dataNode, "AbstractWorker") || IsSubType($dataNode, "WorkerContext") - || $name eq "SVGElementInstance") { - push(@customInternalFields, "eventListenerCacheIndex"); - } - - if (IsSubType($dataNode, "Document")) { - push(@customInternalFields, "implementationIndex"); - } elsif ($name eq "DOMWindow") { - push(@customInternalFields, "enteredIsolatedWorldIndex"); - } - return @customInternalFields; -} - -sub GetHeaderClassInclude -{ - my $className = shift; - if ($className =~ /SVGPathSeg/) { - $className =~ s/Abs|Rel//; - } - return "" if ($codeGenerator->AvoidInclusionOfType($className)); - return "${className}.h"; -} - -sub GenerateHeaderCustomInternalFieldIndices -{ - my $dataNode = shift; - my @customInternalFields = GetInternalFields($dataNode); - my $customFieldCounter = 0; - foreach my $customInternalField (@customInternalFields) { - push(@headerContent, <<END); - static const int ${customInternalField} = v8DefaultWrapperInternalFieldCount + ${customFieldCounter}; -END - $customFieldCounter++; - } - push(@headerContent, <<END); - static const int internalFieldCount = v8DefaultWrapperInternalFieldCount + ${customFieldCounter}; -END -} - -my %indexerSpecialCases = ( - "Storage" => 1, - "HTMLAppletElement" => 1, - "HTMLEmbedElement" => 1, - "HTMLObjectElement" => 1 -); - -sub GenerateHeaderNamedAndIndexedPropertyAccessors -{ - my $dataNode = shift; - my $interfaceName = $dataNode->name; - my $hasCustomIndexedGetter = $dataNode->extendedAttributes->{"HasIndexGetter"} || $dataNode->extendedAttributes->{"CustomGetOwnPropertySlot"}; - my $hasCustomIndexedSetter = $dataNode->extendedAttributes->{"HasCustomIndexSetter"} && !$dataNode->extendedAttributes->{"HasNumericIndexGetter"}; - my $hasCustomNamedGetter = $dataNode->extendedAttributes->{"HasNameGetter"} || $dataNode->extendedAttributes->{"HasOverridingNameGetter"} || $dataNode->extendedAttributes->{"CustomGetOwnPropertySlot"}; - my $hasCustomNamedSetter = $dataNode->extendedAttributes->{"DelegatingPutFunction"}; - my $hasCustomDeleters = $dataNode->extendedAttributes->{"CustomDeleteProperty"}; - my $hasCustomEnumerator = $dataNode->extendedAttributes->{"CustomGetPropertyNames"}; - if ($interfaceName eq "HTMLOptionsCollection") { - $interfaceName = "HTMLCollection"; - $hasCustomIndexedGetter = 1; - $hasCustomNamedGetter = 1; - } - if ($interfaceName eq "DOMWindow") { - $hasCustomDeleterr = 0; - $hasEnumerator = 0; - } - if ($interfaceName eq "HTMLAppletElement" || $interfaceName eq "HTMLEmbedElement" || $interfaceName eq "HTMLObjectElement") { - $hasCustomNamedGetter = 1; - } - if ($interfaceName eq "HTMLDocument") { - $hasCustomNamedGetter = 0; - $hasCustomIndexedGetter = 0; - } - my $isIndexerSpecialCase = exists $indexerSpecialCases{$interfaceName}; - - if ($hasCustomIndexedGetter || $isIndexerSpecialCase) { - push(@headerContent, <<END); - static v8::Handle<v8::Value> indexedPropertyGetter(uint32_t, const v8::AccessorInfo&); -END - } - - if ($isIndexerSpecialCase || $hasCustomIndexedSetter) { - push(@headerContent, <<END); - static v8::Handle<v8::Value> indexedPropertySetter(uint32_t, v8::Local<v8::Value>, const v8::AccessorInfo&); -END - } - if ($hasCustomDeleters) { - push(@headerContent, <<END); - static v8::Handle<v8::Boolean> indexedPropertyDeleter(uint32_t, const v8::AccessorInfo&); -END - } - if ($hasCustomNamedGetter) { - push(@headerContent, <<END); - static v8::Handle<v8::Value> namedPropertyGetter(v8::Local<v8::String>, const v8::AccessorInfo&); -END - } - if ($hasCustomNamedSetter) { - push(@headerContent, <<END); - static v8::Handle<v8::Value> namedPropertySetter(v8::Local<v8::String>, v8::Local<v8::Value>, const v8::AccessorInfo&); -END - } - if ($hasCustomDeleters) { - push(@headerContent, <<END); - static v8::Handle<v8::Boolean> namedPropertyDeleter(v8::Local<v8::String>, const v8::AccessorInfo&); -END - } - if ($hasCustomEnumerator) { - push(@headerContent, <<END); - static v8::Handle<v8::Array> namedPropertyEnumerator(const v8::AccessorInfo&); - static v8::Handle<v8::Integer> namedPropertyQuery(v8::Local<v8::String>, const v8::AccessorInfo&); -END - } -} - -sub GenerateHeaderCustomCall -{ - my $dataNode = shift; - - if ($dataNode->extendedAttributes->{"CustomCall"}) { - push(@headerContent, " static v8::Handle<v8::Value> callAsFunctionCallback(const v8::Arguments&);\n"); - } - if ($dataNode->name eq "Event") { - push(@headerContent, " static v8::Handle<v8::Value> dataTransferAccessorGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info);\n"); - push(@headerContent, " static void valueAccessorSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info);\n"); - } - if ($dataNode->name eq "Location") { - push(@headerContent, " static v8::Handle<v8::Value> assignAccessorGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info);\n"); - push(@headerContent, " static v8::Handle<v8::Value> reloadAccessorGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info);\n"); - push(@headerContent, " static v8::Handle<v8::Value> replaceAccessorGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info);\n"); - } -} - -sub GenerateSetDOMException -{ - my $indent = shift; - my $result = ""; - - $result .= $indent . "if (UNLIKELY(ec)) {\n"; - $result .= $indent . " V8Proxy::setDOMException(ec);\n"; - $result .= $indent . " return v8::Handle<v8::Value>();\n"; - $result .= $indent . "}\n"; - - return $result; -} - -sub IsSubType -{ - my $dataNode = shift; - my $parentType = shift; - return 1 if ($dataNode->name eq $parentType); - foreach (@allParents) { - my $parent = $codeGenerator->StripModule($_); - return 1 if $parent eq $parentType; - } - return 0; -} - -sub IsNodeSubType -{ - my $dataNode = shift; - return IsSubType($dataNode, "Node"); -} - -sub GenerateDomainSafeFunctionGetter -{ - my $function = shift; - my $implClassName = shift; - - my $className = "V8" . $implClassName; - my $funcName = $function->signature->name; - - my $signature = "v8::Signature::New(" . $className . "::GetRawTemplate())"; - if ($function->signature->extendedAttributes->{"V8DoNotCheckSignature"}) { - $signature = "v8::Local<v8::Signature>()"; - } - - my $newTemplateString = GenerateNewFunctionTemplate($function, $implClassName, $signature); - - push(@implContentDecls, <<END); -static v8::Handle<v8::Value> ${funcName}AttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS(\"DOM.$implClassName.$funcName._get\"); - static v8::Persistent<v8::FunctionTemplate> privateTemplate = v8::Persistent<v8::FunctionTemplate>::New($newTemplateString); - v8::Handle<v8::Object> holder = V8DOMWrapper::lookupDOMWrapper(${className}::GetTemplate(), info.This()); - if (holder.IsEmpty()) { - // can only reach here by 'object.__proto__.func', and it should passed - // domain security check already - return privateTemplate->GetFunction(); - } - ${implClassName}* imp = ${className}::toNative(holder); - if (!V8BindingSecurity::canAccessFrame(V8BindingState::Only(), imp->frame(), false)) { - static v8::Persistent<v8::FunctionTemplate> sharedTemplate = v8::Persistent<v8::FunctionTemplate>::New($newTemplateString); - return sharedTemplate->GetFunction(); - } - return privateTemplate->GetFunction(); -} - -END -} - -sub GenerateConstructorGetter -{ - my $implClassName = shift; - - push(@implContentDecls, <<END); -static v8::Handle<v8::Value> ${implClassName}ConstructorGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS(\"DOM.$implClassName.constructors._get\"); - v8::Handle<v8::Value> data = info.Data(); - ASSERT(data->IsExternal() || data->IsNumber()); - WrapperTypeInfo* type = WrapperTypeInfo::unwrap(data); -END - - if ($implClassName eq "DOMWindow") { - push(@implContentDecls, <<END); - // Get the proxy corresponding to the DOMWindow if possible to - // make sure that the constructor function is constructed in the - // context of the DOMWindow and not in the context of the caller. - return V8DOMWrapper::getConstructor(type, V8DOMWindow::toNative(info.Holder())); -END - } elsif ($implClassName eq "DedicatedWorkerContext" or $implClassName eq "WorkerContext" or $implClassName eq "SharedWorkerContext") { - push(@implContentDecls, <<END); - return V8DOMWrapper::getConstructor(type, V8WorkerContext::toNative(info.Holder())); -END - } else { - push(@implContentDecls, " return v8::Handle<v8::Value>();"); - } - - push(@implContentDecls, <<END); -} - -END -} - -sub GenerateNormalAttrGetter -{ - my $attribute = shift; - my $dataNode = shift; - my $implClassName = shift; - my $interfaceName = shift; - - my $attrExt = $attribute->signature->extendedAttributes; - my $attrName = $attribute->signature->name; - my $attrType = GetTypeFromSignature($attribute->signature); - my $nativeType = GetNativeTypeFromSignature($attribute->signature, -1); - - my $getterStringUsesImp = $implClassName ne "SVGNumber"; - my $svgNativeType = $codeGenerator->GetSVGTypeNeedingTearOff($implClassName); - - # Getter - my $conditionalString = GenerateConditionalString($attribute->signature); - push(@implContentDecls, "#if ${conditionalString}\n\n") if $conditionalString; - - push(@implContentDecls, <<END); -static v8::Handle<v8::Value> ${attrName}AttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS(\"DOM.$implClassName.$attrName._get\"); -END - - if ($svgNativeType) { - my $svgWrappedNativeType = $codeGenerator->GetSVGWrappedTypeNeedingTearOff($implClassName); - if ($svgWrappedNativeType =~ /List/) { - push(@implContentDecls, <<END); - $svgNativeType* imp = V8${implClassName}::toNative(info.Holder()); -END - } else { - push(@implContentDecls, <<END); - $svgNativeType* wrapper = V8${implClassName}::toNative(info.Holder()); - $svgWrappedNativeType& impInstance = wrapper->propertyReference(); -END - if ($getterStringUsesImp) { - push(@implContentDecls, <<END); - $svgWrappedNativeType* imp = &impInstance; -END - } - } - } elsif ($attrExt->{"v8OnProto"} || $attrExt->{"V8DisallowShadowing"}) { - if ($interfaceName eq "DOMWindow") { - push(@implContentDecls, <<END); - v8::Handle<v8::Object> holder = info.Holder(); -END - } else { - # perform lookup first - push(@implContentDecls, <<END); - v8::Handle<v8::Object> holder = V8DOMWrapper::lookupDOMWrapper(V8${interfaceName}::GetTemplate(), info.This()); - if (holder.IsEmpty()) - return v8::Handle<v8::Value>(); -END - } - push(@implContentDecls, <<END); - ${implClassName}* imp = V8${implClassName}::toNative(holder); -END - } else { - my $reflect = $attribute->signature->extendedAttributes->{"Reflect"}; - my $url = $attribute->signature->extendedAttributes->{"URL"}; - if ($getterStringUsesImp && $reflect && !$url && IsNodeSubType($dataNode) && $codeGenerator->IsStringType($attrType)) { - # Generate super-compact call for regular attribute getter: - my $contentAttributeName = $reflect eq "1" ? lc $attrName : $reflect; - my $namespace = $codeGenerator->NamespaceForAttributeName($interfaceName, $contentAttributeName); - $implIncludes{"${namespace}.h"} = 1; - push(@implContentDecls, " return getElementStringAttr(info, ${namespace}::${contentAttributeName}Attr);\n"); - push(@implContentDecls, "}\n\n"); - push(@implContentDecls, "#endif // ${conditionalString}\n\n") if $conditionalString; - return; - # Skip the rest of the function! - } - push(@implContentDecls, <<END); - ${implClassName}* imp = V8${implClassName}::toNative(info.Holder()); -END - } - - # Generate security checks if necessary - if ($attribute->signature->extendedAttributes->{"CheckNodeSecurity"}) { - push(@implContentDecls, " if (!V8BindingSecurity::checkNodeSecurity(V8BindingState::Only(), imp->$attrName()))\n return v8::Handle<v8::Value>();\n\n"); - } elsif ($attribute->signature->extendedAttributes->{"CheckFrameSecurity"}) { - push(@implContentDecls, " if (!V8BindingSecurity::checkNodeSecurity(V8BindingState::Only(), imp->contentDocument()))\n return v8::Handle<v8::Value>();\n\n"); - } - - my $useExceptions = 1 if @{$attribute->getterExceptions}; - if ($useExceptions) { - $implIncludes{"ExceptionCode.h"} = 1; - push(@implContentDecls, " ExceptionCode ec = 0;\n"); - } - - if ($attribute->signature->extendedAttributes->{"v8referenceattr"}) { - $attrName = $attribute->signature->extendedAttributes->{"v8referenceattr"}; - } - - my $returnType = GetTypeFromSignature($attribute->signature); - - my $getterString; - if ($getterStringUsesImp) { - $getterString = "imp->" . $codeGenerator->GetterExpressionPrefix(\%implIncludes, $interfaceName, $attribute); - $getterString .= "ec" if $useExceptions; - $getterString .= ")"; - } else { - $getterString = "impInstance"; - } - - my $result; - my $wrapper; - - if ($attribute->signature->type eq "EventListener" && $dataNode->name eq "DOMWindow") { - push(@implContentDecls, " if (!imp->document())\n"); - push(@implContentDecls, " return v8::Handle<v8::Value>();\n"); - } - - if ($useExceptions) { - if ($nativeType =~ /^V8Parameter/) { - push(@implContentDecls, " " . ConvertToV8Parameter($attribute->signature, $nativeType, "v", $getterString) . ";\n"); - } else { - push(@implContentDecls, " $nativeType v = $getterString;\n"); - } - push(@implContentDecls, GenerateSetDOMException(" ")); - $result = "v"; - $result .= ".release()" if (IsRefPtrType($returnType)); - } else { - # Can inline the function call into the return statement to avoid overhead of using a Ref<> temporary - $result = $getterString; - } - - # Special case for readonly or Replaceable attributes (with a few exceptions). This attempts to ensure that JS wrappers don't get - # garbage-collected prematurely when their lifetime is strongly tied to their owner. We accomplish this by inserting a reference to - # the newly created wrapper into an internal field of the holder object. - if (!IsNodeSubType($dataNode) && $attrName ne "self" && (IsWrapperType($returnType) && ($attribute->type =~ /^readonly/ || $attribute->signature->extendedAttributes->{"Replaceable"}) - && $returnType ne "EventTarget" && $returnType ne "SerializedScriptValue" && $returnType ne "DOMWindow" - && $returnType !~ /SVG/ && $returnType !~ /HTML/ && !IsDOMNodeType($returnType))) { - AddIncludesForType($returnType); - my $domMapFunction = GetDomMapFunction(0, $returnType); - # Check for a wrapper in the wrapper cache. If there is one, we know that a hidden reference has already - # been created. If we don't find a wrapper, we create both a wrapper and a hidden reference. - push(@implContentDecls, " RefPtr<$returnType> result = ${getterString};\n"); - push(@implContentDecls, " v8::Handle<v8::Value> wrapper = result.get() ? ${domMapFunction}.get(result.get()) : v8::Handle<v8::Value>();\n"); - push(@implContentDecls, " if (wrapper.IsEmpty()) {\n"); - push(@implContentDecls, " wrapper = toV8(result.get());\n"); - push(@implContentDecls, " if (!wrapper.IsEmpty())\n"); - if ($dataNode->name eq "DOMWindow") { - push(@implContentDecls, " V8DOMWrapper::setHiddenWindowReference(imp->frame(), wrapper);\n"); - } else { - push(@implContentDecls, " V8DOMWrapper::setHiddenReference(info.Holder(), wrapper);\n"); - } - push(@implContentDecls, " }\n"); - push(@implContentDecls, " return wrapper;\n"); - push(@implContentDecls, "}\n\n"); - push(@implContentDecls, "#endif // ${conditionalString}\n\n") if $conditionalString; - return; - } - - if ($codeGenerator->IsSVGAnimatedType($implClassName) and $codeGenerator->IsSVGTypeNeedingTearOff($attrType)) { - $implIncludes{"V8$attrType.h"} = 1; - my $svgNativeType = $codeGenerator->GetSVGTypeNeedingTearOff($attrType); - # Convert from abstract SVGProperty to real type, so the right toJS() method can be invoked. - push(@implContentDecls, " return toV8(static_cast<$svgNativeType*>($result));\n"); - } elsif ($codeGenerator->IsSVGTypeNeedingTearOff($attrType) and not $implClassName =~ /List$/) { - $implIncludes{"V8$attrType.h"} = 1; - $implIncludes{"SVGPropertyTearOff.h"} = 1; - my $tearOffType = $codeGenerator->GetSVGTypeNeedingTearOff($attrType); - if ($codeGenerator->IsSVGTypeWithWritablePropertiesNeedingTearOff($attrType) and not defined $attribute->signature->extendedAttributes->{"Immutable"}) { - my $getter = $result; - $getter =~ s/imp->//; - $getter =~ s/\(\)//; - - my $updateMethod = "&${implClassName}::update" . $codeGenerator->WK_ucfirst($getter); - - my $selfIsTearOffType = $codeGenerator->IsSVGTypeNeedingTearOff($implClassName); - if ($selfIsTearOffType) { - $implIncludes{"SVGStaticPropertyWithParentTearOff.h"} = 1; - $tearOffType =~ s/SVGPropertyTearOff</SVGStaticPropertyWithParentTearOff<$implClassName, /; - - if ($result =~ /matrix/ and $implClassName eq "SVGTransform") { - # SVGTransform offers a matrix() method for internal usage that returns an AffineTransform - # and a svgMatrix() method returning a SVGMatrix, used for the bindings. - $result =~ s/matrix/svgMatrix/; - } - - push(@implContentDecls, " return toV8(WTF::getPtr(${tearOffType}::create(wrapper, $result, $updateMethod)));\n"); - } else { - $implIncludes{"SVGStaticPropertyTearOff.h"} = 1; - $tearOffType =~ s/SVGPropertyTearOff</SVGStaticPropertyTearOff<$implClassName, /; - - push(@implContentDecls, " return toV8(WTF::getPtr(${tearOffType}::create(imp, $result, $updateMethod)));\n"); - } - } elsif ($tearOffType =~ /SVGStaticListPropertyTearOff/) { - my $extraImp = "GetOwnerElementForType<$implClassName, IsDerivedFromSVGElement<$implClassName>::value>::ownerElement(imp), "; - push(@implContentDecls, " return toV8(WTF::getPtr(${tearOffType}::create($extraImp$result)));\n"); - } elsif ($tearOffType =~ /SVG(Point|PathSeg)List/) { - push(@implContentDecls, " return toV8(WTF::getPtr($result));\n"); - } else { - push(@implContentDecls, " return toV8(WTF::getPtr(${tearOffType}::create($result)));\n"); - } - } else { - push(@implContentDecls, " " . ReturnNativeToJSValue($attribute->signature, $result, " ").";\n"); - } - - push(@implContentDecls, "}\n\n"); # end of getter - push(@implContentDecls, "#endif // ${conditionalString}\n\n") if $conditionalString; -} - -sub GenerateNormalAttrSetter -{ - my $attribute = shift; - my $dataNode = shift; - my $implClassName = shift; - my $interfaceName = shift; - - $implIncludes{"V8BindingMacros.h"} = 1; - - my $attrExt = $attribute->signature->extendedAttributes; - - my $conditionalString = GenerateConditionalString($attribute->signature); - push(@implContentDecls, "#if ${conditionalString}\n\n") if $conditionalString; - - push(@implContentDecls, "static void ${attrName}AttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info)\n{\n"); - push(@implContentDecls, " INC_STATS(\"DOM.$implClassName.$attrName._set\");\n"); - - # If the "StrictTypeChecking" extended attribute is present, and the attribute's type is an - # interface type, then if the incoming value does not implement that interface, a TypeError is - # thrown rather than silently passing NULL to the C++ code. - # Per the Web IDL and ECMAScript specifications, incoming values can always be converted to both - # strings and numbers, so do not throw TypeError if the attribute is of these types. - if ($attribute->signature->extendedAttributes->{"StrictTypeChecking"}) { - my $argType = GetTypeFromSignature($attribute->signature); - if (IsWrapperType($argType)) { - push(@implContentDecls, " if (!isUndefinedOrNull(value) && !V8${argType}::HasInstance(value)) {\n"); - push(@implContentDecls, " V8Proxy::throwTypeError();\n"); - push(@implContentDecls, " return;\n"); - push(@implContentDecls, " }\n"); - } - } - - my $svgNativeType = $codeGenerator->GetSVGTypeNeedingTearOff($implClassName); - if ($svgNativeType) { - my $svgWrappedNativeType = $codeGenerator->GetSVGWrappedTypeNeedingTearOff($implClassName); - if ($svgWrappedNativeType =~ /List$/) { - push(@implContentDecls, <<END); - $svgNativeType* imp = V8${implClassName}::toNative(info.Holder()); -END - } else { - push(@implContentDecls, " $svgNativeType* wrapper = V8${implClassName}::toNative(info.Holder());\n"); - push(@implContentDecls, " if (wrapper->role() == AnimValRole) {\n"); - push(@implContentDecls, " V8Proxy::setDOMException(NO_MODIFICATION_ALLOWED_ERR);\n"); - push(@implContentDecls, " return;\n"); - push(@implContentDecls, " }\n"); - push(@implContentDecls, " $svgWrappedNativeType& impInstance = wrapper->propertyReference();\n"); - push(@implContentDecls, " $svgWrappedNativeType* imp = &impInstance;\n"); - } - } elsif ($attrExt->{"v8OnProto"}) { - if ($interfaceName eq "DOMWindow") { - push(@implContentDecls, <<END); - v8::Handle<v8::Object> holder = info.Holder(); -END - } else { - # perform lookup first - push(@implContentDecls, <<END); - v8::Handle<v8::Object> holder = V8DOMWrapper::lookupDOMWrapper(V8${interfaceName}::GetTemplate(), info.This()); - if (holder.IsEmpty()) - return; -END - } - push(@implContentDecls, <<END); - ${implClassName}* imp = V8${implClassName}::toNative(holder); -END - } else { - my $attrType = GetTypeFromSignature($attribute->signature); - my $reflect = $attribute->signature->extendedAttributes->{"Reflect"}; - if ($reflect && IsNodeSubType($dataNode) && $codeGenerator->IsStringType($attrType)) { - # Generate super-compact call for regular attribute setter: - my $contentAttributeName = $reflect eq "1" ? lc $attrName : $reflect; - my $namespace = $codeGenerator->NamespaceForAttributeName($interfaceName, $contentAttributeName); - $implIncludes{"${namespace}.h"} = 1; - push(@implContentDecls, " setElementStringAttr(info, ${namespace}::${contentAttributeName}Attr, value);\n"); - push(@implContentDecls, "}\n\n"); - push(@implContentDecls, "#endif // ${conditionalString}\n\n") if $conditionalString; - return; - # Skip the rest of the function! - } - - push(@implContentDecls, <<END); - ${implClassName}* imp = V8${implClassName}::toNative(info.Holder()); -END - } - - my $nativeType = GetNativeTypeFromSignature($attribute->signature, 0); - if ($attribute->signature->type eq "EventListener") { - if ($dataNode->name eq "DOMWindow") { - push(@implContentDecls, " if (!imp->document())\n"); - push(@implContentDecls, " return;\n"); - } - } else { - my $value = JSValueToNative($attribute->signature, "value"); - if ($nativeType =~ /^V8Parameter/) { - push(@implContentDecls, " " . ConvertToV8Parameter($attribute->signature, $nativeType, "v", $value, "VOID") . "\n"); - } else { - push(@implContentDecls, " $nativeType v = $value;\n"); - } - } - - my $result = "v"; - my $returnType = GetTypeFromSignature($attribute->signature); - if (IsRefPtrType($returnType)) { - $result = "WTF::getPtr(" . $result . ")"; - } - - my $useExceptions = 1 if @{$attribute->setterExceptions}; - - if ($useExceptions) { - $implIncludes{"ExceptionCode.h"} = 1; - push(@implContentDecls, " ExceptionCode ec = 0;\n"); - } - - if ($implClassName eq "SVGNumber") { - push(@implContentDecls, " *imp = $result;\n"); - } else { - if ($attribute->signature->type eq "EventListener") { - my $implSetterFunctionName = $codeGenerator->WK_ucfirst($attrName); - $implIncludes{"V8AbstractEventListener.h"} = 1; - push(@implContentDecls, " transferHiddenDependency(info.Holder(), imp->$attrName(), value, V8${interfaceName}::eventListenerCacheIndex);\n"); - if ($interfaceName eq "WorkerContext" and $attribute->signature->name eq "onerror") { - $implIncludes{"V8EventListenerList.h"} = 1; - $implIncludes{"V8WorkerContextErrorHandler.h"} = 1; - push(@implContentDecls, " imp->set$implSetterFunctionName(V8EventListenerList::findOrCreateWrapper<V8WorkerContextErrorHandler>(value, true)"); - } else { - push(@implContentDecls, " imp->set$implSetterFunctionName(V8DOMWrapper::getEventListener(value, true, ListenerFindOrCreate)"); - } - } else { - my $setterExpressionPrefix = $codeGenerator->SetterExpressionPrefix(\%implIncludes, $interfaceName, $attribute); - push(@implContentDecls, " imp->$setterExpressionPrefix$result"); - } - push(@implContentDecls, ", ec") if $useExceptions; - push(@implContentDecls, ");\n"); - } - - if ($useExceptions) { - push(@implContentDecls, " if (UNLIKELY(ec))\n"); - push(@implContentDecls, " V8Proxy::setDOMException(ec);\n"); - } - - if ($svgNativeType) { - if ($useExceptions) { - push(@implContentDecls, " if (!ec)\n"); - push(@implContentDecls, " wrapper->commitChange();\n"); - } else { - push(@implContentDecls, " wrapper->commitChange();\n"); - } - } - - push(@implContentDecls, " return;\n"); - push(@implContentDecls, "}\n\n"); # end of setter - push(@implContentDecls, "#endif // ${conditionalString}\n\n") if $conditionalString; -} - -sub GetFunctionTemplateCallbackName -{ - $function = shift; - $interfaceName = shift; - - my $name = $function->signature->name; - - if ($function->signature->extendedAttributes->{"Custom"} || - $function->signature->extendedAttributes->{"V8Custom"}) { - if ($function->signature->extendedAttributes->{"Custom"} && - $function->signature->extendedAttributes->{"V8Custom"}) { - die "Custom and V8Custom should be mutually exclusive!" - } - return "V8${interfaceName}::${name}Callback"; - } else { - return "${interfaceName}Internal::${name}Callback"; - } -} - -sub GenerateNewFunctionTemplate -{ - $function = shift; - $interfaceName = shift; - $signature = shift; - - my $callback = GetFunctionTemplateCallbackName($function, $interfaceName); - return "v8::FunctionTemplate::New($callback, v8::Handle<v8::Value>(), $signature)"; -} - -sub GenerateEventListenerCallback -{ - my $implClassName = shift; - my $functionName = shift; - my $lookupType = ($functionName eq "add") ? "OrCreate" : "Only"; - my $passRefPtrHandling = ($functionName eq "add") ? "" : ".get()"; - my $hiddenDependencyAction = ($functionName eq "add") ? "create" : "remove"; - - push(@implContentDecls, <<END); -static v8::Handle<v8::Value> ${functionName}EventListenerCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.${implClassName}.${functionName}EventListener()"); - RefPtr<EventListener> listener = V8DOMWrapper::getEventListener(args[1], false, ListenerFind${lookupType}); - if (listener) { - V8${implClassName}::toNative(args.Holder())->${functionName}EventListener(v8ValueToAtomicWebCoreString(args[0]), listener${passRefPtrHandling}, args[2]->BooleanValue()); - ${hiddenDependencyAction}HiddenDependency(args.Holder(), args[1], V8${implClassName}::eventListenerCacheIndex); - } - return v8::Undefined(); -} - -END -} - -sub GenerateParametersCheckExpression -{ - my $numParameters = shift; - my $function = shift; - - my @andExpression = (); - push(@andExpression, "args.Length() == $numParameters"); - my $parameterIndex = 0; - foreach $parameter (@{$function->parameters}) { - last if $parameterIndex >= $numParameters; - my $value = "args[$parameterIndex]"; - my $type = GetTypeFromSignature($parameter); - - # Only DOMString or wrapper types are checked. - # For DOMString, Null, Undefined and any Object are accepted too, as - # these are acceptable values for a DOMString argument (any Object can - # be converted to a string via .toString). - if ($codeGenerator->IsStringType($type)) { - push(@andExpression, "(${value}->IsNull() || ${value}->IsUndefined() || ${value}->IsString() || ${value}->IsObject())"); - } elsif ($parameter->extendedAttributes->{"Callback"}) { - # For Callbacks only checks if the value is null or object. - push(@andExpression, "(${value}->IsNull() || ${value}->IsObject())"); - } elsif (IsWrapperType($type)) { - push(@andExpression, "(${value}->IsNull() || V8${type}::HasInstance($value))"); - } - - $parameterIndex++; - } - my $res = join(" && ", @andExpression); - $res = "($res)" if @andExpression > 1; - return $res; -} - -sub GenerateFunctionParametersCheck -{ - my $function = shift; - - my @orExpression = (); - my $numParameters = 0; - foreach $parameter (@{$function->parameters}) { - if ($parameter->extendedAttributes->{"Optional"}) { - push(@orExpression, GenerateParametersCheckExpression($numParameters, $function)); - } - $numParameters++; - } - push(@orExpression, GenerateParametersCheckExpression($numParameters, $function)); - return join(" || ", @orExpression); -} - -sub GenerateOverloadedFunctionCallback -{ - my $function = shift; - my $dataNode = shift; - my $implClassName = shift; - - # Generate code for choosing the correct overload to call. Overloads are - # chosen based on the total number of arguments passed and the type of - # values passed in non-primitive argument slots. When more than a single - # overload is applicable, precedence is given according to the order of - # declaration in the IDL. - - my $name = $function->signature->name; - push(@implContentDecls, <<END); -static v8::Handle<v8::Value> ${name}Callback(const v8::Arguments& args) -{ - INC_STATS(\"DOM.$implClassName.$name\"); -END - - foreach my $overload (@{$function->{overloads}}) { - my $parametersCheck = GenerateFunctionParametersCheck($overload); - push(@implContentDecls, " if ($parametersCheck)\n"); - push(@implContentDecls, " return ${name}$overload->{overloadIndex}Callback(args);\n"); - } - push(@implContentDecls, <<END); - V8Proxy::throwTypeError(); - return notHandledByInterceptor(); -END - push(@implContentDecls, "}\n\n"); -} - -sub GenerateFunctionCallback -{ - my $function = shift; - my $dataNode = shift; - my $implClassName = shift; - - my $interfaceName = $dataNode->name; - my $name = $function->signature->name; - - if (@{$function->{overloads}} > 1) { - # Append a number to an overloaded method's name to make it unique: - $name = $name . $function->{overloadIndex}; - } - - # Adding and removing event listeners are not standard callback behavior, - # but they are extremely consistent across the various classes that take event listeners, - # so we can generate them as a "special case". - if ($name eq "addEventListener") { - GenerateEventListenerCallback($implClassName, "add"); - return; - } elsif ($name eq "removeEventListener") { - GenerateEventListenerCallback($implClassName, "remove"); - return; - } - - push(@implContentDecls, <<END); -static v8::Handle<v8::Value> ${name}Callback(const v8::Arguments& args) -{ - INC_STATS(\"DOM.$implClassName.$name\"); -END - - my $numParameters = @{$function->parameters}; - - my $requiresAllArguments = $function->signature->extendedAttributes->{"RequiresAllArguments"}; - if ($requiresAllArguments) { - my $numMandatoryParams = @{$function->parameters}; - foreach my $param (reverse(@{$function->parameters})) { - if ($param->extendedAttributes->{"Optional"}) { - $numMandatoryParams--; - } else { - last; - } - } - push(@implContentDecls, " if (args.Length() < $numMandatoryParams)\n"); - if ($requiresAllArguments eq "Raise") { - push(@implContentDecls, " return throwError(\"Not enough arguments\", V8Proxy::SyntaxError);\n"); - } else { - push(@implContentDecls, " return v8::Handle<v8::Value>();\n"); - } - } - - my ($svgPropertyType, $svgListPropertyType, $svgNativeType) = GetSVGPropertyTypes($implClassName); - - if ($svgNativeType) { - my $nativeClassName = GetNativeType($implClassName); - if ($implClassName =~ /List$/) { - push(@implContentDecls, " $nativeClassName imp = V8${implClassName}::toNative(args.Holder());\n"); - } else { - push(@implContentDecls, " $nativeClassName wrapper = V8${implClassName}::toNative(args.Holder());\n"); - push(@implContentDecls, " if (wrapper->role() == AnimValRole) {\n"); - push(@implContentDecls, " V8Proxy::setDOMException(NO_MODIFICATION_ALLOWED_ERR);\n"); - push(@implContentDecls, " return v8::Handle<v8::Value>();\n"); - push(@implContentDecls, " }\n"); - my $svgWrappedNativeType = $codeGenerator->GetSVGWrappedTypeNeedingTearOff($implClassName); - push(@implContentDecls, " $svgWrappedNativeType& impInstance = wrapper->propertyReference();\n"); - push(@implContentDecls, " $svgWrappedNativeType* imp = &impInstance;\n"); - } - } elsif (!$function->signature->extendedAttributes->{"ClassMethod"}) { - push(@implContentDecls, <<END); - ${implClassName}* imp = V8${implClassName}::toNative(args.Holder()); -END - } - - # Check domain security if needed - if (($dataNode->extendedAttributes->{"CheckDomainSecurity"} - || $interfaceName eq "DOMWindow") - && !$function->signature->extendedAttributes->{"DoNotCheckDomainSecurity"}) { - # We have not find real use cases yet. - push(@implContentDecls, <<END); - if (!V8BindingSecurity::canAccessFrame(V8BindingState::Only(), imp->frame(), true)) - return v8::Handle<v8::Value>(); -END - } - - my $raisesExceptions = @{$function->raisesExceptions}; - if (!$raisesExceptions) { - foreach my $parameter (@{$function->parameters}) { - if ((!$parameter->extendedAttributes->{"Callback"} and TypeCanFailConversion($parameter)) or $parameter->extendedAttributes->{"IsIndex"}) { - $raisesExceptions = 1; - } - } - } - - if ($raisesExceptions) { - $implIncludes{"ExceptionCode.h"} = 1; - push(@implContentDecls, " ExceptionCode ec = 0;\n"); - push(@implContentDecls, " {\n"); - # The brace here is needed to prevent the ensuing 'goto fail's from jumping past constructors - # of objects (like Strings) declared later, causing compile errors. The block scope ends - # right before the label 'fail:'. - } - - if ($function->signature->extendedAttributes->{"CustomArgumentHandling"}) { - push(@implContentDecls, <<END); - RefPtr<ScriptArguments> scriptArguments(createScriptArguments(args, $numParameters)); - size_t maxStackSize = imp->shouldCaptureFullStackTrace() ? ScriptCallStack::maxCallStackSizeToCapture : 1; - RefPtr<ScriptCallStack> callStack(createScriptCallStack(maxStackSize)); - if (!callStack) - return v8::Undefined(); -END - $implIncludes{"ScriptArguments.h"} = 1; - $implIncludes{"ScriptCallStack.h"} = 1; - $implIncludes{"ScriptCallStackFactory.h"} = 1; - } - if ($function->signature->extendedAttributes->{"SVGCheckSecurityDocument"}) { - push(@implContentDecls, <<END); - if (!V8BindingSecurity::checkNodeSecurity(V8BindingState::Only(), imp->getSVGDocument(ec))) - return v8::Handle<v8::Value>(); -END - } - - my $paramIndex = 0; - foreach my $parameter (@{$function->parameters}) { - TranslateParameter($parameter); - - my $parameterName = $parameter->name; - - # Optional callbacks should be treated differently, because they always have a default value (0), - # and we can reduce the number of overloaded functions that take a different number of parameters. - if ($parameter->extendedAttributes->{"Optional"} && !$parameter->extendedAttributes->{"Callback"}) { - # Generate early call if there are not enough parameters. - push(@implContentDecls, " if (args.Length() <= $paramIndex) {\n"); - my $functionCall = GenerateFunctionCallString($function, $paramIndex, " " x 2, $implClassName); - push(@implContentDecls, $functionCall); - push(@implContentDecls, " }\n"); - } - - $implIncludes{"ExceptionCode.h"} = 1; - my $nativeType = GetNativeTypeFromSignature($parameter, $paramIndex); - if ($parameter->extendedAttributes->{"Callback"}) { - my $className = GetCallbackClassName($parameter->type); - $implIncludes{"$className.h"} = 1; - if ($parameter->extendedAttributes->{"Optional"}) { - push(@implContentDecls, " RefPtr<" . $parameter->type . "> $parameterName;\n"); - push(@implContentDecls, " if (args.Length() > $paramIndex && !args[$paramIndex]->IsNull() && !args[$paramIndex]->IsUndefined()) {\n"); - push(@implContentDecls, " if (!args[$paramIndex]->IsObject())\n"); - push(@implContentDecls, " return throwError(TYPE_MISMATCH_ERR);\n"); - push(@implContentDecls, " $parameterName = ${className}::create(args[$paramIndex], getScriptExecutionContext());\n"); - push(@implContentDecls, " }\n"); - } else { - push(@implContentDecls, " if (args.Length() <= $paramIndex || !args[$paramIndex]->IsObject())\n"); - push(@implContentDecls, " return throwError(TYPE_MISMATCH_ERR);\n"); - push(@implContentDecls, " RefPtr<" . $parameter->type . "> $parameterName = ${className}::create(args[$paramIndex], getScriptExecutionContext());\n"); - } - } elsif ($parameter->type eq "SerializedScriptValue") { - $implIncludes{"SerializedScriptValue.h"} = 1; - push(@implContentDecls, " bool ${parameterName}DidThrow = false;\n"); - push(@implContentDecls, " $nativeType $parameterName = SerializedScriptValue::create(args[$paramIndex], ${parameterName}DidThrow);\n"); - push(@implContentDecls, " if (${parameterName}DidThrow)\n"); - push(@implContentDecls, " return v8::Undefined();\n"); - } elsif (TypeCanFailConversion($parameter)) { - push(@implContentDecls, " $nativeType $parameterName = " . - JSValueToNative($parameter, "args[$paramIndex]") . ";\n"); - push(@implContentDecls, " if (UNLIKELY(!$parameterName)) {\n"); - push(@implContentDecls, " ec = TYPE_MISMATCH_ERR;\n"); - push(@implContentDecls, " goto fail;\n"); - push(@implContentDecls, " }\n"); - } elsif ($nativeType =~ /^V8Parameter/) { - my $value = JSValueToNative($parameter, "args[$paramIndex]"); - push(@implContentDecls, " " . ConvertToV8Parameter($parameter, $nativeType, $parameterName, $value) . "\n"); - } else { - $implIncludes{"V8BindingMacros.h"} = 1; - # If the "StrictTypeChecking" extended attribute is present, and the argument's type is an - # interface type, then if the incoming value does not implement that interface, a TypeError - # is thrown rather than silently passing NULL to the C++ code. - # Per the Web IDL and ECMAScript specifications, incoming values can always be converted - # to both strings and numbers, so do not throw TypeError if the argument is of these - # types. - if ($function->signature->extendedAttributes->{"StrictTypeChecking"}) { - my $argValue = "args[$paramIndex]"; - my $argType = GetTypeFromSignature($parameter); - if (IsWrapperType($argType)) { - push(@implContentDecls, " if (args.Length() > $paramIndex && !isUndefinedOrNull($argValue) && !V8${argType}::HasInstance($argValue)) {\n"); - push(@implContentDecls, " V8Proxy::throwTypeError();\n"); - push(@implContentDecls, " return notHandledByInterceptor();\n"); - push(@implContentDecls, " }\n"); - } - } - push(@implContentDecls, " EXCEPTION_BLOCK($nativeType, $parameterName, " . - JSValueToNative($parameter, "args[$paramIndex]") . ");\n"); - } - - if ($parameter->extendedAttributes->{"IsIndex"}) { - push(@implContentDecls, " if (UNLIKELY($parameterName < 0)) {\n"); - push(@implContentDecls, " ec = INDEX_SIZE_ERR;\n"); - push(@implContentDecls, " goto fail;\n"); - push(@implContentDecls, " }\n"); - } - - $paramIndex++; - } - - # Build the function call string. - my $callString = GenerateFunctionCallString($function, $paramIndex, " ", $implClassName); - push(@implContentDecls, "$callString"); - - if ($raisesExceptions) { - push(@implContentDecls, " }\n"); - push(@implContentDecls, " fail:\n"); - push(@implContentDecls, " V8Proxy::setDOMException(ec);\n"); - push(@implContentDecls, " return v8::Handle<v8::Value>();\n"); - } - - push(@implContentDecls, "}\n\n"); -} - -sub GenerateBatchedAttributeData -{ - my $dataNode = shift; - my $interfaceName = $dataNode->name; - my $attributes = shift; - - foreach my $attribute (@$attributes) { - my $conditionalString = GenerateConditionalString($attribute->signature); - push(@implContent, "#if ${conditionalString}\n") if $conditionalString; - GenerateSingleBatchedAttribute($interfaceName, $attribute, ",", ""); - push(@implContent, "#endif // ${conditionalString}\n") if $conditionalString; - } -} - -sub GenerateSingleBatchedAttribute -{ - my $interfaceName = shift; - my $attribute = shift; - my $delimiter = shift; - my $indent = shift; - my $attrName = $attribute->signature->name; - my $attrExt = $attribute->signature->extendedAttributes; - - # Attributes of type SerializedScriptValue are set in the - # constructor and don't require callbacks. - return if ($attribute->signature->type eq "SerializedScriptValue"); - - my $accessControl = "v8::DEFAULT"; - if ($attrExt->{"DoNotCheckDomainSecurityOnGet"}) { - $accessControl = "v8::ALL_CAN_READ"; - } elsif ($attrExt->{"DoNotCheckDomainSecurityOnSet"}) { - $accessControl = "v8::ALL_CAN_WRITE"; - } elsif ($attrExt->{"DoNotCheckDomainSecurity"}) { - $accessControl = "v8::ALL_CAN_READ"; - if (!($attribute->type =~ /^readonly/) && !($attrExt->{"V8ReadOnly"})) { - $accessControl .= " | v8::ALL_CAN_WRITE"; - } - } - if ($attrExt->{"V8DisallowShadowing"}) { - $accessControl .= " | v8::PROHIBITS_OVERWRITING"; - } - $accessControl = "static_cast<v8::AccessControl>(" . $accessControl . ")"; - - my $customAccessor = - $attrExt->{"Custom"} || - $attrExt->{"CustomSetter"} || - $attrExt->{"CustomGetter"} || - $attrExt->{"V8Custom"} || - $attrExt->{"V8CustomSetter"} || - $attrExt->{"V8CustomGetter"} || - ""; - if ($customAccessor eq 1) { - # use the naming convension, interface + (capitalize) attr name - $customAccessor = $interfaceName . "::" . $attrName; - } - - my $getter; - my $setter; - my $propAttr = "v8::None"; - my $hasCustomSetter = 0; - - # Check attributes. - if ($attrExt->{"DontEnum"}) { - $propAttr .= " | v8::DontEnum"; - } - if ($attrExt->{"V8DisallowShadowing"}) { - $propAttr .= " | v8::DontDelete"; - } - - my $on_proto = "0 /* on instance */"; - my $data = "0 /* no data */"; - - # Constructor - if ($attribute->signature->type =~ /Constructor$/) { - my $constructorType = $codeGenerator->StripModule($attribute->signature->type); - $constructorType =~ s/Constructor$//; - $implIncludes{"V8${constructorType}.h"} = 1; - if ($customAccessor) { - $getter = "V8${customAccessor}AccessorGetter"; - } else { - $data = "&V8${constructorType}::info"; - $getter = "${interfaceName}Internal::${interfaceName}ConstructorGetter"; - } - $setter = "0"; - $propAttr = "v8::ReadOnly"; - - } else { - # Default Getter and Setter - $getter = "${interfaceName}Internal::${attrName}AttrGetter"; - $setter = "${interfaceName}Internal::${attrName}AttrSetter"; - - # Custom Setter - if ($attrExt->{"CustomSetter"} || $attrExt->{"V8CustomSetter"} || $attrExt->{"Custom"} || $attrExt->{"V8Custom"}) { - $hasCustomSetter = 1; - $setter = "V8${customAccessor}AccessorSetter"; - } - - # Custom Getter - if ($attrExt->{"CustomGetter"} || $attrExt->{"V8CustomGetter"} || $attrExt->{"Custom"} || $attrExt->{"V8Custom"}) { - $getter = "V8${customAccessor}AccessorGetter"; - } - } - - # Replaceable - if ($attrExt->{"Replaceable"} && !$hasCustomSetter) { - $setter = "0"; - # Handle the special case of window.top being marked as Replaceable. - # FIXME: Investigate whether we could treat window.top as replaceable - # and allow shadowing without it being a security hole. - if (!($interfaceName eq "DOMWindow" and $attrName eq "top")) { - $propAttr .= " | v8::ReadOnly"; - } - } - - # Read only attributes - if ($attribute->type =~ /^readonly/ || $attrExt->{"V8ReadOnly"}) { - $setter = "0"; - } - - # An accessor can be installed on the proto - if ($attrExt->{"v8OnProto"}) { - $on_proto = "1 /* on proto */"; - } - - my $commentInfo = "Attribute '$attrName' (Type: '" . $attribute->type . - "' ExtAttr: '" . join(' ', keys(%{$attrExt})) . "')"; - - push(@implContent, $indent . " \/\/ $commentInfo\n"); - push(@implContent, $indent . " {\"$attrName\", $getter, $setter, $data, $accessControl, static_cast<v8::PropertyAttribute>($propAttr), $on_proto}" . $delimiter . "\n"); -} - -sub GenerateImplementationIndexer -{ - my $dataNode = shift; - my $indexer = shift; - my $interfaceName = $dataNode->name; - - # FIXME: Figure out what HasNumericIndexGetter is really supposed to do. Right now, it's only set on WebGL-related files. - my $hasCustomSetter = $dataNode->extendedAttributes->{"HasCustomIndexSetter"} && !$dataNode->extendedAttributes->{"HasNumericIndexGetter"}; - my $hasGetter = $dataNode->extendedAttributes->{"HasIndexGetter"} || $dataNode->extendedAttributes->{"CustomGetOwnPropertySlot"}; - - # FIXME: Find a way to not have to special-case HTMLOptionsCollection. - if ($interfaceName eq "HTMLOptionsCollection") { - $hasGetter = 1; - } - - # FIXME: Investigate and remove this nastinesss. In V8, named property handling and indexer handling are apparently decoupled, - # which means that object[X] where X is a number doesn't reach named property indexer. So we need to provide - # simplistic, mirrored indexer handling in addition to named property handling. - my $isSpecialCase = exists $indexerSpecialCases{$interfaceName}; - if ($isSpecialCase) { - $hasGetter = 1; - if ($dataNode->extendedAttributes->{"DelegatingPutFunction"}) { - $hasCustomSetter = 1; - } - } - - if (!$hasGetter) { - return; - } - - $implIncludes{"V8Collection.h"} = 1; - - my $indexerType = $indexer ? $indexer->type : 0; - - # FIXME: Remove this once toV8 helper methods are implemented (see https://bugs.webkit.org/show_bug.cgi?id=32563). - if ($interfaceName eq "WebKitCSSKeyframesRule") { - $indexerType = "WebKitCSSKeyframeRule"; - } - - # FIXME: The item() getter is not inherited from CSSValueList, seemingly due to the way - # the CodeGenerator->AddMethodsConstantsAndAttributesFromParentClasses() method works, - # so we need to set the indexerType manually in this case. - if ($interfaceName eq "WebKitCSSTransformValue") { - $indexerType = "CSSValue"; - } - - if ($indexerType && !$hasCustomSetter) { - if ($indexerType eq "DOMString") { - my $conversion = $indexer->extendedAttributes->{"ConvertNullStringTo"}; - if ($conversion && $conversion eq "Null") { - push(@implContent, <<END); - setCollectionStringOrNullIndexedGetter<${interfaceName}>(desc); -END - } else { - push(@implContent, <<END); - setCollectionStringIndexedGetter<${interfaceName}>(desc); -END - } - } else { - push(@implContent, <<END); - setCollectionIndexedGetter<${interfaceName}, ${indexerType}>(desc); -END - # Include the header for this indexer type, because setCollectionIndexedGetter() requires toV8() for this type. - $implIncludes{"V8${indexerType}.h"} = 1; - } - - return; - } - - my $hasDeleter = $dataNode->extendedAttributes->{"CustomDeleteProperty"}; - my $hasEnumerator = !$isSpecialCase && IsNodeSubType($dataNode); - my $setOn = "Instance"; - - # V8 has access-check callback API (see ObjectTemplate::SetAccessCheckCallbacks) and it's used on DOMWindow - # instead of deleters or enumerators. In addition, the getter should be set on prototype template, to - # get implementation straight out of the DOMWindow prototype regardless of what prototype is actually set - # on the object. - if ($interfaceName eq "DOMWindow") { - $setOn = "Prototype"; - $hasDeleter = 0; - } - - push(@implContent, " desc->${setOn}Template()->SetIndexedPropertyHandler(V8${interfaceName}::indexedPropertyGetter"); - push(@implContent, $hasCustomSetter ? ", V8${interfaceName}::indexedPropertySetter" : ", 0"); - push(@implContent, ", 0"); # IndexedPropertyQuery -- not being used at the moment. - push(@implContent, $hasDeleter ? ", V8${interfaceName}::indexedPropertyDeleter" : ", 0"); - push(@implContent, ", nodeCollectionIndexedPropertyEnumerator<${interfaceName}>") if $hasEnumerator; - push(@implContent, ");\n"); -} - -sub GenerateImplementationNamedPropertyGetter -{ - my $dataNode = shift; - my $namedPropertyGetter = shift; - my $interfaceName = $dataNode->name; - my $hasCustomGetter = $dataNode->extendedAttributes->{"HasOverridingNameGetter"} || $dataNode->extendedAttributes->{"CustomGetOwnPropertySlot"}; - - # FIXME: Remove hard-coded HTMLOptionsCollection reference by changing HTMLOptionsCollection to not inherit - # from HTMLCollection per W3C spec (http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html#HTMLOptionsCollection). - if ($interfaceName eq "HTMLOptionsCollection") { - $interfaceName = "HTMLCollection"; - $hasCustomGetter = 1; - } - - if ($interfaceName eq "HTMLAppletElement" || $interfaceName eq "HTMLEmbedElement" || $interfaceName eq "HTMLObjectElement") { - $hasCustomGetter = 1; - } - - if ($interfaceName eq "HTMLDocument") { - $hasCustomGetter = 0; - } - - my $hasGetter = $dataNode->extendedAttributes->{"HasNameGetter"} || $hasCustomGetter; - if (!$hasGetter) { - return; - } - - if ($namedPropertyGetter && $namedPropertyGetter->type ne "Node" && !$namedPropertyGetter->extendedAttributes->{"Custom"} && !$hasCustomGetter) { - $implIncludes{"V8Collection.h"} = 1; - my $type = $namedPropertyGetter->type; - push(@implContent, <<END); - setCollectionNamedGetter<${interfaceName}, ${type}>(desc); -END - return; - } - - my $hasSetter = $dataNode->extendedAttributes->{"DelegatingPutFunction"}; - my $hasDeleter = $dataNode->extendedAttributes->{"CustomDeleteProperty"}; - my $hasEnumerator = $dataNode->extendedAttributes->{"CustomGetPropertyNames"}; - my $setOn = "Instance"; - - # V8 has access-check callback API (see ObjectTemplate::SetAccessCheckCallbacks) and it's used on DOMWindow - # instead of deleters or enumerators. In addition, the getter should be set on prototype template, to - # get implementation straight out of the DOMWindow prototype regardless of what prototype is actually set - # on the object. - if ($interfaceName eq "DOMWindow") { - $setOn = "Prototype"; - $hasDeleter = 0; - $hasEnumerator = 0; - } - - push(@implContent, " desc->${setOn}Template()->SetNamedPropertyHandler(V8${interfaceName}::namedPropertyGetter, "); - push(@implContent, $hasSetter ? "V8${interfaceName}::namedPropertySetter, " : "0, "); - # If there is a custom enumerator, there MUST be custom query to properly communicate property attributes. - push(@implContent, $hasEnumerator ? "V8${interfaceName}::namedPropertyQuery, " : "0, "); - push(@implContent, $hasDeleter ? "V8${interfaceName}::namedPropertyDeleter, " : "0, "); - push(@implContent, $hasEnumerator ? "V8${interfaceName}::namedPropertyEnumerator" : "0"); - push(@implContent, ");\n"); -} - -sub GenerateImplementationCustomCall -{ - my $dataNode = shift; - my $interfaceName = $dataNode->name; - my $hasCustomCall = $dataNode->extendedAttributes->{"CustomCall"}; - - # FIXME: Remove hard-coded HTMLOptionsCollection reference. - if ($interfaceName eq "HTMLOptionsCollection") { - $interfaceName = "HTMLCollection"; - $hasCustomCall = 1; - } - - if ($hasCustomCall) { - push(@implContent, " desc->InstanceTemplate()->SetCallAsFunctionHandler(V8${interfaceName}::callAsFunctionCallback);\n"); - } -} - -sub GenerateImplementationMasqueradesAsUndefined -{ - my $dataNode = shift; - if ($dataNode->extendedAttributes->{"MasqueradesAsUndefined"}) - { - push(@implContent, " desc->InstanceTemplate()->MarkAsUndetectable();\n"); - } -} - -sub GenerateImplementation -{ - my $object = shift; - my $dataNode = shift; - my $interfaceName = $dataNode->name; - my $visibleInterfaceName = GetVisibleInterfaceName($interfaceName); - my $className = "V8$interfaceName"; - my $implClassName = $interfaceName; - my $hasLegacyParent = $dataNode->extendedAttributes->{"LegacyParent"}; - - # - Add default header template - push(@implFixedHeader, GenerateImplementationContentHeader($dataNode)); - - $implIncludes{"RuntimeEnabledFeatures.h"} = 1; - $implIncludes{"V8Proxy.h"} = 1; - $implIncludes{"V8Binding.h"} = 1; - $implIncludes{"V8BindingState.h"} = 1; - $implIncludes{"V8DOMWrapper.h"} = 1; - $implIncludes{"V8IsolatedContext.h"} = 1; - - AddIncludesForType($interfaceName); - - my $toActive = IsActiveDomType($interfaceName) ? "${className}::toActiveDOMObject" : "0"; - - push(@implContentDecls, "namespace WebCore {\n\n"); - push(@implContentDecls, "WrapperTypeInfo ${className}::info = { ${className}::GetTemplate, ${className}::derefObject, ${toActive} };\n\n"); - push(@implContentDecls, "namespace ${interfaceName}Internal {\n\n"); - push(@implContentDecls, "template <typename T> void V8_USE(T) { }\n\n"); - - my $hasConstructors = 0; - my $serializedAttribute; - # Generate property accessors for attributes. - for ($index = 0; $index < @{$dataNode->attributes}; $index++) { - $attribute = @{$dataNode->attributes}[$index]; - $attrName = $attribute->signature->name; - $attrType = $attribute->signature->type; - - # Generate special code for the constructor attributes. - if ($attrType =~ /Constructor$/) { - if (!($attribute->signature->extendedAttributes->{"CustomGetter"} || - $attribute->signature->extendedAttributes->{"V8CustomGetter"})) { - $hasConstructors = 1; - } - next; - } - - if ($attrType eq "EventListener" && $interfaceName eq "DOMWindow") { - $attribute->signature->extendedAttributes->{"v8OnProto"} = 1; - } - - # Attributes of type SerializedScriptValue are set in the - # constructor and don't require callbacks. - if ($attrType eq "SerializedScriptValue") { - die "Only one attribute of type SerializedScriptValue supported" if $serializedAttribute; - $implIncludes{"SerializedScriptValue.h"} = 1; - $serializedAttribute = $attribute; - next; - } - - # Do not generate accessor if this is a custom attribute. The - # call will be forwarded to a hand-written accessor - # implementation. - if ($attribute->signature->extendedAttributes->{"Custom"} || - $attribute->signature->extendedAttributes->{"V8Custom"}) { - next; - } - - # Generate the accessor. - if (!($attribute->signature->extendedAttributes->{"CustomGetter"} || - $attribute->signature->extendedAttributes->{"V8CustomGetter"})) { - GenerateNormalAttrGetter($attribute, $dataNode, $implClassName, $interfaceName); - } - if (!$attribute->signature->extendedAttributes->{"CustomSetter"} && - !$attribute->signature->extendedAttributes->{"V8CustomSetter"} && - !$attribute->signature->extendedAttributes->{"Replaceable"} && - $attribute->type !~ /^readonly/ && - !$attribute->signature->extendedAttributes->{"V8ReadOnly"}) { - GenerateNormalAttrSetter($attribute, $dataNode, $implClassName, $interfaceName); - } - } - - if ($hasConstructors) { - GenerateConstructorGetter($implClassName); - } - - $codeGenerator->LinkOverloadedFunctions($dataNode); - - my $indexer; - my $namedPropertyGetter; - # Generate methods for functions. - foreach my $function (@{$dataNode->functions}) { - if (!($function->signature->extendedAttributes->{"Custom"} || $function->signature->extendedAttributes->{"V8Custom"})) { - GenerateFunctionCallback($function, $dataNode, $implClassName); - if ($function->{overloadIndex} > 1 && $function->{overloadIndex} == @{$function->{overloads}}) { - GenerateOverloadedFunctionCallback($function, $dataNode, $implClassName); - } - } - - if ($function->signature->name eq "item") { - $indexer = $function->signature; - } - - if ($function->signature->name eq "namedItem") { - $namedPropertyGetter = $function->signature; - } - - # If the function does not need domain security check, we need to - # generate an access getter that returns different function objects - # for different calling context. - if (($dataNode->extendedAttributes->{"CheckDomainSecurity"} || ($interfaceName eq "DOMWindow")) && $function->signature->extendedAttributes->{"DoNotCheckDomainSecurity"}) { - GenerateDomainSafeFunctionGetter($function, $implClassName); - } - } - - # Attributes - my $attributes = $dataNode->attributes; - - # For the DOMWindow interface we partition the attributes into the - # ones that disallows shadowing and the rest. - my @disallowsShadowing; - # Also separate out attributes that are enabled at runtime so we can process them specially. - my @enabledAtRuntime; - my @normal; - foreach my $attribute (@$attributes) { - - if ($interfaceName eq "DOMWindow" && $attribute->signature->extendedAttributes->{"V8DisallowShadowing"}) { - push(@disallowsShadowing, $attribute); - } elsif ($attribute->signature->extendedAttributes->{"EnabledAtRuntime"}) { - push(@enabledAtRuntime, $attribute); - } else { - push(@normal, $attribute); - } - } - $attributes = \@normal; - # Put the attributes that disallow shadowing on the shadow object. - if (@disallowsShadowing) { - push(@implContent, "static const BatchedAttribute shadowAttrs[] = {\n"); - GenerateBatchedAttributeData($dataNode, \@disallowsShadowing); - push(@implContent, "};\n"); - } - - my $has_attributes = 0; - if (@$attributes) { - $has_attributes = 1; - push(@implContent, "static const BatchedAttribute ${interfaceName}Attrs[] = {\n"); - GenerateBatchedAttributeData($dataNode, $attributes); - push(@implContent, "};\n"); - } - - # Setup table of standard callback functions - $num_callbacks = 0; - $has_callbacks = 0; - foreach my $function (@{$dataNode->functions}) { - # Only one table entry is needed for overloaded methods: - next if $function->{overloadIndex} > 1; - - my $attrExt = $function->signature->extendedAttributes; - # Don't put any nonstandard functions into this table: - if ($attrExt->{"V8OnInstance"}) { - next; - } - if ($attrExt->{"ClassMethod"}) { - next; - } - if ($attrExt->{"EnabledAtRuntime"} || RequiresCustomSignature($function) || $attrExt->{"V8DoNotCheckSignature"}) { - next; - } - if ($attrExt->{"DoNotCheckDomainSecurity"} && - ($dataNode->extendedAttributes->{"CheckDomainSecurity"} || $interfaceName eq "DOMWindow")) { - next; - } - if ($attrExt->{"DontEnum"} || $attrExt->{"V8ReadOnly"}) { - next; - } - if (!$has_callbacks) { - $has_callbacks = 1; - push(@implContent, "static const BatchedCallback ${interfaceName}Callbacks[] = {\n"); - } - my $name = $function->signature->name; - my $callback = GetFunctionTemplateCallbackName($function, $interfaceName); - push(@implContent, <<END); - {"$name", $callback}, -END - $num_callbacks++; - } - push(@implContent, "};\n") if $has_callbacks; - - # Setup constants - my $has_constants = 0; - if (@{$dataNode->constants}) { - $has_constants = 1; - push(@implContent, "static const BatchedConstant ${interfaceName}Consts[] = {\n"); - } - foreach my $constant (@{$dataNode->constants}) { - my $name = $constant->name; - my $value = $constant->value; - # FIXME: we need the static_cast here only because of one constant, NodeFilter.idl - # defines "const unsigned long SHOW_ALL = 0xFFFFFFFF". It would be better if we - # handled this here, and converted it to a -1 constant in the c++ output. - push(@implContent, <<END); - {"${name}", static_cast<signed int>($value)}, -END - } - if ($has_constants) { - push(@implContent, "};\n"); - push(@implContent, $codeGenerator->GenerateCompileTimeCheckForEnumsIfNeeded($dataNode)); - } - - push(@implContentDecls, "} // namespace ${interfaceName}Internal\n\n"); - - # In namespace WebCore, add generated implementation for 'CanBeConstructed'. - if ($dataNode->extendedAttributes->{"CanBeConstructed"} && !$dataNode->extendedAttributes->{"CustomConstructor"} && !$dataNode->extendedAttributes->{"V8CustomConstructor"}) { - my $v8ConstructFunction; - my $callWith = $dataNode->extendedAttributes->{"CallWith"}; - if ($callWith and $callWith eq "ScriptExecutionContext") { - $v8ConstructFunction = "constructDOMObjectWithScriptExecutionContext"; - } else { - $v8ConstructFunction = "constructDOMObject"; - } - push(@implContent, <<END); -v8::Handle<v8::Value> ${className}::constructorCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.${interfaceName}.Contructor"); - return V8Proxy::${v8ConstructFunction}<$interfaceName>(args, &info); -} -END - } - - my $access_check = ""; - if ($dataNode->extendedAttributes->{"CheckDomainSecurity"} && !($interfaceName eq "DOMWindow")) { - $access_check = "instance->SetAccessCheckCallbacks(V8${interfaceName}::namedSecurityCheck, V8${interfaceName}::indexedSecurityCheck, v8::External::Wrap(&V8${interfaceName}::info));"; - } - - # For the DOMWindow interface, generate the shadow object template - # configuration method. - if ($implClassName eq "DOMWindow") { - push(@implContent, <<END); -static v8::Persistent<v8::ObjectTemplate> ConfigureShadowObjectTemplate(v8::Persistent<v8::ObjectTemplate> templ) -{ - batchConfigureAttributes(templ, v8::Handle<v8::ObjectTemplate>(), shadowAttrs, WTF_ARRAY_LENGTH(shadowAttrs)); - - // Install a security handler with V8. - templ->SetAccessCheckCallbacks(V8DOMWindow::namedSecurityCheck, V8DOMWindow::indexedSecurityCheck, v8::External::Wrap(&V8DOMWindow::info)); - templ->SetInternalFieldCount(V8DOMWindow::internalFieldCount); - return templ; -} -END - } - - # find the super descriptor - my $parentClassTemplate = ""; - foreach (@{$dataNode->parents}) { - my $parent = $codeGenerator->StripModule($_); - if ($parent eq "EventTarget") { next; } - $implIncludes{"V8${parent}.h"} = 1; - $parentClassTemplate = "V8" . $parent . "::GetTemplate()"; - last; - } - if (!$parentClassTemplate) { - $parentClassTemplate = "v8::Persistent<v8::FunctionTemplate>()"; - } - - # Generate the template configuration method - push(@implContent, <<END); -static v8::Persistent<v8::FunctionTemplate> Configure${className}Template(v8::Persistent<v8::FunctionTemplate> desc) -{ - v8::Local<v8::Signature> defaultSignature = configureTemplate(desc, \"${visibleInterfaceName}\", $parentClassTemplate, V8${interfaceName}::internalFieldCount, -END - # Set up our attributes if we have them - if ($has_attributes) { - push(@implContent, <<END); - ${interfaceName}Attrs, WTF_ARRAY_LENGTH(${interfaceName}Attrs), -END - } else { - push(@implContent, <<END); - 0, 0, -END - } - - if ($has_callbacks) { - push(@implContent, <<END); - ${interfaceName}Callbacks, WTF_ARRAY_LENGTH(${interfaceName}Callbacks)); -END - } else { - push(@implContent, <<END); - 0, 0); -END - } - - if ($dataNode->extendedAttributes->{"CustomConstructor"} || $dataNode->extendedAttributes->{"V8CustomConstructor"} || $dataNode->extendedAttributes->{"CanBeConstructed"}) { - push(@implContent, <<END); - desc->SetCallHandler(V8${interfaceName}::constructorCallback); -END - } - - if ($access_check or @enabledAtRuntime or @{$dataNode->functions} or $has_constants) { - push(@implContent, <<END); - v8::Local<v8::ObjectTemplate> instance = desc->InstanceTemplate(); - v8::Local<v8::ObjectTemplate> proto = desc->PrototypeTemplate(); -END - } - - push(@implContent, " $access_check\n"); - - # Setup the enable-at-runtime attrs if we have them - foreach my $runtime_attr (@enabledAtRuntime) { - my $enable_function = GetRuntimeEnableFunctionName($runtime_attr->signature); - my $conditionalString = GenerateConditionalString($runtime_attr->signature); - push(@implContent, "\n#if ${conditionalString}\n") if $conditionalString; - push(@implContent, " if (${enable_function}()) {\n"); - push(@implContent, " static const BatchedAttribute attrData =\\\n"); - GenerateSingleBatchedAttribute($interfaceName, $runtime_attr, ";", " "); - push(@implContent, <<END); - configureAttribute(instance, proto, attrData); - } -END - push(@implContent, "\n#endif // ${conditionalString}\n") if $conditionalString; - } - - GenerateImplementationIndexer($dataNode, $indexer); - GenerateImplementationNamedPropertyGetter($dataNode, $namedPropertyGetter); - GenerateImplementationCustomCall($dataNode); - GenerateImplementationMasqueradesAsUndefined($dataNode); - - # Define our functions with Set() or SetAccessor() - $total_functions = 0; - foreach my $function (@{$dataNode->functions}) { - # Only one accessor is needed for overloaded methods: - next if $function->{overloadIndex} > 1; - - $total_functions++; - my $attrExt = $function->signature->extendedAttributes; - my $name = $function->signature->name; - - my $property_attributes = "v8::DontDelete"; - if ($attrExt->{"DontEnum"}) { - $property_attributes .= " | v8::DontEnum"; - } - if ($attrExt->{"V8ReadOnly"}) { - $property_attributes .= " | v8::ReadOnly"; - } - - my $commentInfo = "Function '$name' (ExtAttr: '" . join(' ', keys(%{$attrExt})) . "')"; - - my $template = "proto"; - if ($attrExt->{"V8OnInstance"}) { - $template = "instance"; - } - if ($attrExt->{"ClassMethod"}) { - $template = "desc"; - } - - my $conditional = ""; - if ($attrExt->{"EnabledAtRuntime"}) { - # Only call Set()/SetAccessor() if this method should be enabled - $enable_function = GetRuntimeEnableFunctionName($function->signature); - $conditional = "if (${enable_function}())\n "; - } - - if ($attrExt->{"DoNotCheckDomainSecurity"} && - ($dataNode->extendedAttributes->{"CheckDomainSecurity"} || $interfaceName eq "DOMWindow")) { - # Mark the accessor as ReadOnly and set it on the proto object so - # it can be shadowed. This is really a hack to make it work. - # There are several sceneria to call into the accessor: - # 1) from the same domain: "window.open": - # the accessor finds the DOM wrapper in the proto chain; - # 2) from the same domain: "window.__proto__.open": - # the accessor will NOT find a DOM wrapper in the prototype chain - # 3) from another domain: "window.open": - # the access find the DOM wrapper in the prototype chain - # "window.__proto__.open" from another domain will fail when - # accessing '__proto__' - # - # The solution is very hacky and fragile, it really needs to be replaced - # by a better solution. - $property_attributes .= " | v8::ReadOnly"; - push(@implContent, <<END); - - // $commentInfo - ${conditional}$template->SetAccessor(v8::String::New("$name"), ${interfaceName}Internal::${name}AttrGetter, 0, v8::Handle<v8::Value>(), v8::ALL_CAN_READ, static_cast<v8::PropertyAttribute>($property_attributes)); -END - $num_callbacks++; - next; - } - - my $signature = "defaultSignature"; - if ($attrExt->{"V8DoNotCheckSignature"} || $attrExt->{"ClassMethod"}) { - $signature = "v8::Local<v8::Signature>()"; - } - - if (RequiresCustomSignature($function)) { - $signature = "${name}Signature"; - push(@implContent, "\n // Custom Signature '$name'\n", CreateCustomSignature($function)); - } - - # Normal function call is a template - my $callback = GetFunctionTemplateCallbackName($function, $interfaceName); - - if ($property_attributes eq "v8::DontDelete") { - $property_attributes = ""; - } else { - $property_attributes = ", static_cast<v8::PropertyAttribute>($property_attributes)"; - } - - if ($template eq "proto" && $conditional eq "" && $signature eq "defaultSignature" && $property_attributes eq "") { - # Standard type of callback, already created in the batch, so skip it here. - next; - } - - push(@implContent, <<END); - ${conditional}$template->Set(v8::String::New("$name"), v8::FunctionTemplate::New($callback, v8::Handle<v8::Value>(), ${signature})$property_attributes); -END - $num_callbacks++; - } - - die "Wrong number of callbacks generated for $interfaceName ($num_callbacks, should be $total_functions)" if $num_callbacks != $total_functions; - - if ($has_constants) { - push(@implContent, <<END); - batchConfigureConstants(desc, proto, ${interfaceName}Consts, WTF_ARRAY_LENGTH(${interfaceName}Consts)); -END - } - - # Special cases - if ($interfaceName eq "DOMWindow") { - push(@implContent, <<END); - - proto->SetInternalFieldCount(V8DOMWindow::internalFieldCount); - desc->SetHiddenPrototype(true); - instance->SetInternalFieldCount(V8DOMWindow::internalFieldCount); - // Set access check callbacks, but turned off initially. - // When a context is detached from a frame, turn on the access check. - // Turning on checks also invalidates inline caches of the object. - instance->SetAccessCheckCallbacks(V8DOMWindow::namedSecurityCheck, V8DOMWindow::indexedSecurityCheck, v8::External::Wrap(&V8DOMWindow::info), false); -END - } - if ($interfaceName eq "HTMLDocument") { - push(@implContent, <<END); - desc->SetHiddenPrototype(true); -END - } - if ($interfaceName eq "Location") { - push(@implContent, <<END); - - // For security reasons, these functions are on the instance instead - // of on the prototype object to ensure that they cannot be overwritten. - instance->SetAccessor(v8::String::New("reload"), V8Location::reloadAccessorGetter, 0, v8::Handle<v8::Value>(), v8::ALL_CAN_READ, static_cast<v8::PropertyAttribute>(v8::DontDelete | v8::ReadOnly)); - instance->SetAccessor(v8::String::New("replace"), V8Location::replaceAccessorGetter, 0, v8::Handle<v8::Value>(), v8::ALL_CAN_READ, static_cast<v8::PropertyAttribute>(v8::DontDelete | v8::ReadOnly)); - instance->SetAccessor(v8::String::New("assign"), V8Location::assignAccessorGetter, 0, v8::Handle<v8::Value>(), v8::ALL_CAN_READ, static_cast<v8::PropertyAttribute>(v8::DontDelete | v8::ReadOnly)); -END - } - - my $nativeType = GetNativeTypeForConversions($dataNode, $interfaceName); - push(@implContent, <<END); - - // Custom toString template - desc->Set(getToStringName(), getToStringTemplate()); - return desc; -} - -v8::Persistent<v8::FunctionTemplate> ${className}::GetRawTemplate() -{ - static v8::Persistent<v8::FunctionTemplate> ${className}RawCache = createRawTemplate(); - return ${className}RawCache; -} - -v8::Persistent<v8::FunctionTemplate> ${className}::GetTemplate()\ -{ - static v8::Persistent<v8::FunctionTemplate> ${className}Cache = Configure${className}Template(GetRawTemplate()); - return ${className}Cache; -} - -bool ${className}::HasInstance(v8::Handle<v8::Value> value) -{ - return GetRawTemplate()->HasInstance(value); -} - -END - - if (IsActiveDomType($interfaceName)) { - # MessagePort is handled like an active dom object even though it doesn't inherit - # from ActiveDOMObject, so don't try to cast it to ActiveDOMObject. - my $returnValue = $interfaceName eq "MessagePort" ? "0" : "toNative(object)"; - push(@implContent, <<END); -ActiveDOMObject* ${className}::toActiveDOMObject(v8::Handle<v8::Object> object) -{ - return ${returnValue}; -} -END - } - - if ($implClassName eq "DOMWindow") { - push(@implContent, <<END); -v8::Persistent<v8::ObjectTemplate> V8DOMWindow::GetShadowObjectTemplate() -{ - static v8::Persistent<v8::ObjectTemplate> V8DOMWindowShadowObjectCache; - if (V8DOMWindowShadowObjectCache.IsEmpty()) { - V8DOMWindowShadowObjectCache = v8::Persistent<v8::ObjectTemplate>::New(v8::ObjectTemplate::New()); - ConfigureShadowObjectTemplate(V8DOMWindowShadowObjectCache); - } - return V8DOMWindowShadowObjectCache; -} -END - } - - GenerateToV8Converters($dataNode, $interfaceName, $className, $nativeType, $serializedAttribute); - - push(@implContent, <<END); - -void ${className}::derefObject(void* object) -{ -END - - if (IsRefPtrType($interfaceName)) { - push(@implContent, <<END); - static_cast<${nativeType}*>(object)->deref(); -END - } - - push(@implContent, <<END); -} - -} // namespace WebCore -END - - my $conditionalString = GenerateConditionalString($dataNode); - push(@implContent, "\n#endif // ${conditionalString}\n") if $conditionalString; - - # We've already added the header for this file in implFixedHeader, so remove - # it from implIncludes to ensure we don't #include it twice. - delete $implIncludes{"${className}.h"}; -} - -sub GenerateHeaderContentHeader -{ - my $dataNode = shift; - my $className = "V8" . $dataNode->name; - my $conditionalString = GenerateConditionalString($dataNode); - - my @headerContentHeader = split("\r", $headerTemplate); - - push(@headerContentHeader, "\n#if ${conditionalString}\n") if $conditionalString; - push(@headerContentHeader, "\n#ifndef ${className}" . "_h"); - push(@headerContentHeader, "\n#define ${className}" . "_h\n\n"); - return @headerContentHeader; -} - -sub GenerateImplementationContentHeader -{ - my $dataNode = shift; - my $className = "V8" . $dataNode->name; - my $conditionalString = GenerateConditionalString($dataNode); - - my @implContentHeader = split("\r", $headerTemplate); - - push(@implContentHeader, "\n#include \"config.h\"\n"); - push(@implContentHeader, "#include \"${className}.h\"\n\n"); - push(@implContentHeader, "#if ${conditionalString}\n\n") if $conditionalString; - return @implContentHeader; -} - -sub GenerateCallbackHeader -{ - my $object = shift; - my $dataNode = shift; - - my $interfaceName = $dataNode->name; - my $className = "V8$interfaceName"; - - - # - Add default header template - push(@headerContent, GenerateHeaderContentHeader($dataNode)); - - my @unsortedIncludes = (); - push(@unsortedIncludes, "#include \"ActiveDOMCallback.h\""); - push(@unsortedIncludes, "#include \"$interfaceName.h\""); - push(@unsortedIncludes, "#include \"WorldContextHandle.h\""); - push(@unsortedIncludes, "#include <v8.h>"); - push(@unsortedIncludes, "#include <wtf/Forward.h>"); - push(@headerContent, join("\n", sort @unsortedIncludes)); - - push(@headerContent, "\n\nnamespace WebCore {\n\n"); - push(@headerContent, "class ScriptExecutionContext;\n\n"); - push(@headerContent, "class $className : public $interfaceName, public ActiveDOMCallback {\n"); - - push(@headerContent, <<END); -public: - static PassRefPtr<${className}> create(v8::Local<v8::Value> value, ScriptExecutionContext* context) - { - ASSERT(value->IsObject()); - ASSERT(context); - return adoptRef(new ${className}(value->ToObject(), context)); - } - - virtual ~${className}(); - -END - - # Functions - my $numFunctions = @{$dataNode->functions}; - if ($numFunctions > 0) { - push(@headerContent, " // Functions\n"); - foreach my $function (@{$dataNode->functions}) { - my @params = @{$function->parameters}; - if (!$function->signature->extendedAttributes->{"Custom"} && - !(GetNativeType($function->signature->type) eq "bool")) { - push(@headerContent, " COMPILE_ASSERT(false)"); - } - - push(@headerContent, " virtual " . GetNativeTypeForCallbacks($function->signature->type) . " " . $function->signature->name . "("); - - my @args = (); - foreach my $param (@params) { - push(@args, GetNativeTypeForCallbacks($param->type) . " " . $param->name); - } - push(@headerContent, join(", ", @args)); - push(@headerContent, ");\n"); - } - } - - push(@headerContent, <<END); - -private: - ${className}(v8::Local<v8::Object>, ScriptExecutionContext*); - - v8::Persistent<v8::Object> m_callback; - WorldContextHandle m_worldContext; -}; - -END - - push(@headerContent, "}\n\n"); - push(@headerContent, "#endif // $className" . "_h\n\n"); - - my $conditionalString = GenerateConditionalString($dataNode); - push(@headerContent, "#endif // ${conditionalString}\n") if $conditionalString; -} - -sub GenerateCallbackImplementation -{ - my $object = shift; - my $dataNode = shift; - my $interfaceName = $dataNode->name; - my $className = "V8$interfaceName"; - - # - Add default header template - push(@implFixedHeader, GenerateImplementationContentHeader($dataNode)); - - $implIncludes{"ScriptExecutionContext.h"} = 1; - $implIncludes{"V8CustomVoidCallback.h"} = 1; - $implIncludes{"V8Proxy.h"} = 1; - - push(@implContent, "#include <wtf/Assertions.h>\n\n"); - push(@implContent, "namespace WebCore {\n\n"); - push(@implContent, <<END); -${className}::${className}(v8::Local<v8::Object> callback, ScriptExecutionContext* context) - : ActiveDOMCallback(context) - , m_callback(v8::Persistent<v8::Object>::New(callback)) - , m_worldContext(UseCurrentWorld) -{ -} - -${className}::~${className}() -{ - m_callback.Dispose(); -} - -END - - # Functions - my $numFunctions = @{$dataNode->functions}; - if ($numFunctions > 0) { - push(@implContent, "// Functions\n"); - foreach my $function (@{$dataNode->functions}) { - my @params = @{$function->parameters}; - if ($function->signature->extendedAttributes->{"Custom"} || - !(GetNativeTypeForCallbacks($function->signature->type) eq "bool")) { - next; - } - - AddIncludesForType($function->signature->type); - push(@implContent, "\n" . GetNativeTypeForCallbacks($function->signature->type) . " ${className}::" . $function->signature->name . "("); - - my @args = (); - foreach my $param (@params) { - AddIncludesForType($param->type); - push(@args, GetNativeTypeForCallbacks($param->type) . " " . $param->name); - } - push(@implContent, join(", ", @args)); - - push(@implContent, ")\n"); - push(@implContent, "{\n"); - push(@implContent, " if (!canInvokeCallback())\n"); - push(@implContent, " return true;\n\n"); - push(@implContent, " v8::HandleScope handleScope;\n\n"); - push(@implContent, " v8::Handle<v8::Context> v8Context = toV8Context(scriptExecutionContext(), m_worldContext);\n"); - push(@implContent, " if (v8Context.IsEmpty())\n"); - push(@implContent, " return true;\n\n"); - push(@implContent, " v8::Context::Scope scope(v8Context);\n\n"); - - @args = (); - foreach my $param (@params) { - my $paramName = $param->name; - push(@implContent, " v8::Handle<v8::Value> ${paramName}Handle = toV8(${paramName});\n"); - push(@implContent, " if (${paramName}Handle.IsEmpty()) {\n"); - push(@implContent, " CRASH();\n"); - push(@implContent, " return true;\n"); - push(@implContent, " }\n"); - push(@args, " ${paramName}Handle"); - } - - push(@implContent, "\n v8::Handle<v8::Value> argv[] = {\n"); - push(@implContent, join(",\n", @args)); - push(@implContent, "\n };\n\n"); - push(@implContent, " bool callbackReturnValue = false;\n"); - push(@implContent, " return !invokeCallback(m_callback, " . scalar(@params) . ", argv, callbackReturnValue, scriptExecutionContext());\n"); - push(@implContent, "}\n"); - } - } - - push(@implContent, "\n} // namespace WebCore\n\n"); - - my $conditionalString = GenerateConditionalString($dataNode); - push(@implContent, "#endif // ${conditionalString}\n") if $conditionalString; -} - -sub GenerateToV8Converters -{ - my $dataNode = shift; - my $interfaceName = shift; - my $className = shift; - my $nativeType = shift; - my $serializedAttribute = shift; - - my $domMapFunction = GetDomMapFunction($dataNode, $interfaceName); - my $forceNewObjectInput = IsDOMNodeType($interfaceName) ? ", bool forceNewObject" : ""; - my $forceNewObjectCall = IsDOMNodeType($interfaceName) ? ", forceNewObject" : ""; - - push(@implContent, <<END); - -v8::Handle<v8::Object> ${className}::wrapSlow(${nativeType}* impl) -{ - v8::Handle<v8::Object> wrapper; - V8Proxy* proxy = 0; -END - - if (IsNodeSubType($dataNode)) { - push(@implContent, <<END); - if (impl->document()) { - proxy = V8Proxy::retrieve(impl->document()->frame()); - if (proxy && static_cast<Node*>(impl->document()) == static_cast<Node*>(impl)) { - if (proxy->windowShell()->initContextIfNeeded()) { - // initContextIfNeeded may have created a wrapper for the object, retry from the start. - return ${className}::wrap(impl); - } - } - } - -END - } - - if (IsNodeSubType($dataNode)) { - push(@implContent, <<END); - - v8::Handle<v8::Context> context; - if (proxy) - context = proxy->context(); - - // Enter the node's context and create the wrapper in that context. - if (!context.IsEmpty()) - context->Enter(); -END - } - - push(@implContent, <<END); - wrapper = V8DOMWrapper::instantiateV8Object(proxy, &info, impl); -END - if (IsNodeSubType($dataNode)) { - push(@implContent, <<END); - // Exit the node's context if it was entered. - if (!context.IsEmpty()) - context->Exit(); -END - } - - push(@implContent, <<END); - if (wrapper.IsEmpty()) - return wrapper; -END - push(@implContent, "\n impl->ref();\n") if IsRefPtrType($interfaceName); - - # Eagerly deserialize attributes of type SerializedScriptValue - # while we're in the right context. - if ($serializedAttribute) { - die "Attribute of type SerializedScriptValue expected" if $serializedAttribute->signature->type ne "SerializedScriptValue"; - my $attrName = $serializedAttribute->signature->name; - my $attrAttr = "v8::DontDelete"; - if ($serializedAttribute->type =~ /^readonly/) { - $attrAttr .= " | v8::ReadOnly"; - } - $attrAttr = "static_cast<v8::PropertyAttribute>($attrAttr)"; - my $getterFunc = $codeGenerator->WK_lcfirst($attrName); - push(@implContent, <<END); - SerializedScriptValue::deserializeAndSetProperty(wrapper, "${attrName}", ${attrAttr}, impl->${getterFunc}()); -END - } - - if ($domMapFunction) { - push(@implContent, <<END); - ${domMapFunction}.set(impl, v8::Persistent<v8::Object>::New(wrapper)); -END - } - - push(@implContent, <<END); - return wrapper; -} -END -} - -sub HasCustomToV8Implementation { - # FIXME: This subroutine is lame. Probably should be an .idl attribute (CustomToV8)? - $dataNode = shift; - $interfaceName = shift; - - # We generate a custom converter (but JSC doesn't) for the following: - return 1 if $interfaceName eq "CSSStyleSheet"; - return 1 if $interfaceName eq "CanvasPixelArray"; - return 1 if $interfaceName eq "DOMStringMap"; - return 1 if $interfaceName eq "DOMWindow"; - return 1 if $interfaceName eq "DOMTokenList"; - return 1 if $interfaceName eq "Element"; - return 1 if $interfaceName eq "HTMLDocument"; - return 1 if $interfaceName eq "HTMLElement"; - return 1 if $interfaceName eq "Location"; - return 1 if $interfaceName eq "NamedNodeMap"; - return 1 if $interfaceName eq "SVGDocument"; - return 1 if $interfaceName eq "SVGElement"; - return 1 if $interfaceName eq "ScriptProfile"; - return 1 if $interfaceName eq "ScriptProfileNode"; - return 1 if $interfaceName eq "WorkerContext"; - # We don't generate a custom converter (but JSC does) for the following: - return 0 if $interfaceName eq "AbstractWorker"; - return 0 if $interfaceName eq "CanvasRenderingContext"; - return 0 if $interfaceName eq "SVGElementInstance"; - - # For everything else, do what JSC does. - return $dataNode->extendedAttributes->{"CustomToJS"}; -} - -sub GetDomMapFunction -{ - my $dataNode = shift; - my $type = shift; - return "getDOMSVGElementInstanceMap()" if $type eq "SVGElementInstance"; - return "getDOMNodeMap()" if ($dataNode && IsNodeSubType($dataNode)); - return "" if $type eq "DOMImplementation"; - return "getActiveDOMObjectMap()" if IsActiveDomType($type); - return "getDOMObjectMap()"; -} - -sub IsActiveDomType -{ - # FIXME: Consider making this an .idl attribute. - my $type = shift; - return 1 if $type eq "EventSource"; - return 1 if $type eq "MessagePort"; - return 1 if $type eq "XMLHttpRequest"; - return 1 if $type eq "WebSocket"; - return 1 if $type eq "Worker"; - return 1 if $type eq "SharedWorker"; - return 1 if $type eq "IDBRequest"; - return 1 if $type eq "FileReader"; - return 1 if $type eq "FileWriter"; - return 0; -} - -sub GetNativeTypeForConversions -{ - my $dataNode = shift; - my $type = shift; - - $type = $codeGenerator->GetSVGTypeNeedingTearOff($type) if $codeGenerator->IsSVGTypeNeedingTearOff($type); - return $type; -} - -sub GenerateFunctionCallString() -{ - my $function = shift; - my $numberOfParameters = shift; - my $indent = shift; - my $implClassName = shift; - - my $name = $function->signature->name; - my $returnType = GetTypeFromSignature($function->signature); - my $nativeReturnType = GetNativeType($returnType, 0); - my $result = ""; - - my $isSVGTearOffType = ($codeGenerator->IsSVGTypeNeedingTearOff($returnType) and not $implClassName =~ /List$/); - $nativeReturnType = $codeGenerator->GetSVGWrappedTypeNeedingTearOff($returnType) if $isSVGTearOffType; - - if ($function->signature->extendedAttributes->{"v8implname"}) { - $name = $function->signature->extendedAttributes->{"v8implname"}; - } - - if ($function->signature->extendedAttributes->{"ImplementationFunction"}) { - $name = $function->signature->extendedAttributes->{"ImplementationFunction"}; - } - - my $functionString = "imp->${name}("; - if ($function->signature->extendedAttributes->{"ClassMethod"}) { - $functionString = "${implClassName}::${name}("; - } - - my $index = 0; - my $hasScriptState = 0; - - my $callWith = $function->signature->extendedAttributes->{"CallWith"}; - if ($callWith) { - my $callWithArg = "COMPILE_ASSERT(false)"; - if ($callWith eq "DynamicFrame") { - $result .= $indent . "Frame* enteredFrame = V8Proxy::retrieveFrameForEnteredContext();\n"; - $result .= $indent . "if (!enteredFrame)\n"; - $result .= $indent . " return v8::Undefined();\n"; - $callWithArg = "enteredFrame"; - } elsif ($callWith eq "ScriptState") { - $result .= $indent . "EmptyScriptState state;\n"; - $callWithArg = "&state"; - $hasScriptState = 1; - } elsif ($callWith eq "ScriptExecutionContext") { - $result .= $indent . "ScriptExecutionContext* scriptContext = getScriptExecutionContext();\n"; - $result .= $indent . "if (!scriptContext)\n"; - $result .= $indent . " return v8::Undefined();\n"; - $callWithArg = "scriptContext"; - } - $functionString .= ", " if $index; - $functionString .= $callWithArg; - $index++; - $numberOfParameters++ - } - - foreach my $parameter (@{$function->parameters}) { - if ($index eq $numberOfParameters) { - last; - } - $functionString .= ", " if $index; - my $paramName = $parameter->name; - my $paramType = $parameter->type; - - if ($parameter->type eq "NodeFilter" || $parameter->type eq "XPathNSResolver") { - $functionString .= "$paramName.get()"; - } elsif ($codeGenerator->IsSVGTypeNeedingTearOff($parameter->type) and not $implClassName =~ /List$/) { - $functionString .= "$paramName->propertyReference()"; - $result .= $indent . "if (!$paramName) {\n"; - $result .= $indent . " V8Proxy::setDOMException(WebCore::TYPE_MISMATCH_ERR);\n"; - $result .= $indent . " return v8::Handle<v8::Value>();\n"; - $result .= $indent . "}\n"; - } elsif ($parameter->type eq "SVGMatrix" and $implClassName eq "SVGTransformList") { - $functionString .= "$paramName.get()"; - } else { - $functionString .= $paramName; - } - $index++; - } - - if ($function->signature->extendedAttributes->{"CustomArgumentHandling"}) { - $functionString .= ", " if $index; - $functionString .= "scriptArguments, callStack"; - $index += 2; - } - - if ($function->signature->extendedAttributes->{"NeedsUserGestureCheck"}) { - $functionString .= ", " if $index; - # FIXME: We need to pass DOMWrapperWorld as a parameter. - # See http://trac.webkit.org/changeset/54182 - $functionString .= "processingUserGesture()"; - $index++; - } - - if (@{$function->raisesExceptions}) { - $functionString .= ", " if $index; - $functionString .= "ec"; - $index++; - } - $functionString .= ")"; - - my $return = "result"; - my $returnIsRef = IsRefPtrType($returnType); - - if ($returnType eq "void") { - $result .= $indent . "$functionString;\n"; - } elsif ($hasScriptState or @{$function->raisesExceptions}) { - $result .= $indent . $nativeReturnType . " result = $functionString;\n"; - } else { - # Can inline the function call into the return statement to avoid overhead of using a Ref<> temporary - $return = $functionString; - $returnIsRef = 0; - - if ($implClassName eq "SVGTransformList" and IsRefPtrType($returnType)) { - $return = "WTF::getPtr(" . $return . ")"; - } - } - - if (@{$function->raisesExceptions}) { - $result .= $indent . "if (UNLIKELY(ec))\n"; - $result .= $indent . " goto fail;\n"; - } - - if ($hasScriptState) { - $result .= $indent . "if (state.hadException())\n"; - $result .= $indent . " return throwError(state.exception());\n" - } - - if ($isSVGTearOffType) { - $implIncludes{"V8$returnType.h"} = 1; - $implIncludes{"SVGPropertyTearOff.h"} = 1; - my $svgNativeType = $codeGenerator->GetSVGTypeNeedingTearOff($returnType); - $result .= $indent . "return toV8(WTF::getPtr(${svgNativeType}::create($return)));\n"; - return $result; - } - - # If the implementing class is a POD type, commit changes - if ($codeGenerator->IsSVGTypeNeedingTearOff($implClassName) and not $implClassName =~ /List$/) { - $result .= $indent . "wrapper->commitChange();\n"; - } - - $return .= ".release()" if ($returnIsRef); - $result .= $indent . ReturnNativeToJSValue($function->signature, $return, $indent) . ";\n"; - - return $result; -} - - -sub GetTypeFromSignature -{ - my $signature = shift; - - return $codeGenerator->StripModule($signature->type); -} - - -sub GetNativeTypeFromSignature -{ - my $signature = shift; - my $parameterIndex = shift; - - my $type = GetTypeFromSignature($signature); - - if ($type eq "unsigned long" and $signature->extendedAttributes->{"IsIndex"}) { - # Special-case index arguments because we need to check that they aren't < 0. - return "int"; - } - - $type = GetNativeType($type, $parameterIndex >= 0 ? 1 : 0); - - if ($parameterIndex >= 0 && $type eq "V8Parameter") { - my $mode = ""; - if ($signature->extendedAttributes->{"ConvertUndefinedOrNullToNullString"}) { - $mode = "WithUndefinedOrNullCheck"; - } elsif ($signature->extendedAttributes->{"ConvertNullToNullString"} || $signature->extendedAttributes->{"Reflect"}) { - $mode = "WithNullCheck"; - } - $type .= "<$mode>"; - } - - return $type; -} - -sub IsRefPtrType -{ - my $type = shift; - - return 0 if $type eq "boolean"; - return 0 if $type eq "float"; - return 0 if $type eq "int"; - return 0 if $type eq "Date"; - return 0 if $type eq "DOMString"; - return 0 if $type eq "double"; - return 0 if $type eq "short"; - return 0 if $type eq "long"; - return 0 if $type eq "unsigned"; - return 0 if $type eq "unsigned long"; - return 0 if $type eq "unsigned short"; - - return 1; -} - -sub GetNativeType -{ - my $type = shift; - my $isParameter = shift; - - my $svgNativeType = $codeGenerator->GetSVGTypeNeedingTearOff($type); - if ($svgNativeType) { - if ($svgNativeType =~ /List$/) { - return "${svgNativeType}*"; - } else { - return "RefPtr<${svgNativeType} >"; - } - } - - if ($type eq "float" or $type eq "double") { - return $type; - } - - return "V8Parameter" if ($type eq "DOMString" or $type eq "DOMUserData") and $isParameter; - return "int" if $type eq "int"; - return "int" if $type eq "short" or $type eq "unsigned short"; - return "unsigned" if $type eq "unsigned long"; - return "int" if $type eq "long"; - return "long long" if $type eq "long long"; - return "unsigned long long" if $type eq "unsigned long long"; - return "bool" if $type eq "boolean"; - return "String" if $type eq "DOMString"; - return "Range::CompareHow" if $type eq "CompareHow"; - return "SVGPaint::SVGPaintType" if $type eq "SVGPaintType"; - return "DOMTimeStamp" if $type eq "DOMTimeStamp"; - return "unsigned" if $type eq "unsigned int"; - return "Node*" if $type eq "EventTarget" and $isParameter; - return "double" if $type eq "Date"; - return "ScriptValue" if $type eq "DOMObject"; - return "OptionsObject" if $type eq "OptionsObject"; - - return "String" if $type eq "DOMUserData"; # FIXME: Temporary hack? - - # temporary hack - return "RefPtr<NodeFilter>" if $type eq "NodeFilter"; - - return "RefPtr<SerializedScriptValue>" if $type eq "SerializedScriptValue"; - - return "RefPtr<IDBKey>" if $type eq "IDBKey"; - - # necessary as resolvers could be constructed on fly. - return "RefPtr<XPathNSResolver>" if $type eq "XPathNSResolver"; - - return "RefPtr<${type}>" if IsRefPtrType($type) and not $isParameter; - - return "RefPtr<MediaQueryListListener>" if $type eq "MediaQueryListListener"; - - # Default, assume native type is a pointer with same type name as idl type - return "${type}*"; -} - -sub GetNativeTypeForCallbacks -{ - my $type = shift; - return "const String&" if $type eq "DOMString"; - - # Callbacks use raw pointers, so pass isParameter = 1 - return GetNativeType($type, 1); -} - -sub TranslateParameter -{ - my $signature = shift; - - # The IDL uses some pseudo-types which don't really exist. - if ($signature->type eq "TimeoutHandler") { - $signature->type("DOMString"); - } -} - -sub TypeCanFailConversion -{ - my $signature = shift; - - my $type = GetTypeFromSignature($signature); - - $implIncludes{"ExceptionCode.h"} = 1 if $type eq "Attr"; - return 1 if $type eq "Attr"; - return 1 if $type eq "VoidCallback"; - return 1 if $type eq "IDBKey"; - return 0; -} - -sub JSValueToNative -{ - my $signature = shift; - my $value = shift; - - my $type = GetTypeFromSignature($signature); - - return "$value" if $type eq "JSObject"; - return "$value->BooleanValue()" if $type eq "boolean"; - return "static_cast<$type>($value->NumberValue())" if $type eq "float" or $type eq "double"; - - return "toInt32($value)" if $type eq "long" or $type eq "short"; - return "toUInt32($value)" if $type eq "unsigned long" or $type eq "unsigned short"; - return "toInt64($value)" if $type eq "unsigned long long" or $type eq "long long"; - return "static_cast<Range::CompareHow>($value->Int32Value())" if $type eq "CompareHow"; - return "static_cast<SVGPaint::SVGPaintType>($value->ToInt32()->Int32Value())" if $type eq "SVGPaintType"; - return "toWebCoreDate($value)" if $type eq "Date"; - - if ($type eq "DOMString" or $type eq "DOMUserData") { - return $value; - } - - die "Unexpected SerializedScriptValue" if $type eq "SerializedScriptValue"; - - if ($type eq "IDBKey") { - $implIncludes{"IDBBindingUtilities.h"} = 1; - $implIncludes{"IDBKey.h"} = 1; - return "createIDBKeyFromValue($value)"; - } - - if ($type eq "OptionsObject") { - $implIncludes{"OptionsObject.h"} = 1; - return $value; - } - - if ($type eq "DOMObject") { - $implIncludes{"ScriptValue.h"} = 1; - return "ScriptValue($value)"; - } - - if ($type eq "NodeFilter") { - return "V8DOMWrapper::wrapNativeNodeFilter($value)"; - } - - if ($type eq "MediaQueryListListener") { - $implIncludes{"MediaQueryListListener.h"} = 1; - return "MediaQueryListListener::create(" . $value . ")"; - } - - # Default, assume autogenerated type conversion routines - if ($type eq "EventTarget") { - $implIncludes{"V8Node.h"} = 1; - - # EventTarget is not in DOM hierarchy, but all Nodes are EventTarget. - return "V8Node::HasInstance($value) ? V8Node::toNative(v8::Handle<v8::Object>::Cast($value)) : 0"; - } - - if ($type eq "XPathNSResolver") { - return "V8DOMWrapper::getXPathNSResolver($value)"; - } - - AddIncludesForType($type); - - if (IsDOMNodeType($type)) { - $implIncludes{"V8${type}.h"} = 1; - - # Perform type checks on the parameter, if it is expected Node type, - # return NULL. - return "V8${type}::HasInstance($value) ? V8${type}::toNative(v8::Handle<v8::Object>::Cast($value)) : 0"; - } else { - $implIncludes{"V8$type.h"} = 1; - - # Perform type checks on the parameter, if it is expected Node type, - # return NULL. - return "V8${type}::HasInstance($value) ? V8${type}::toNative(v8::Handle<v8::Object>::Cast($value)) : 0"; - } -} - -sub GetV8HeaderName -{ - my $type = shift; - return "V8Event.h" if $type eq "DOMTimeStamp"; - return "EventListener.h" if $type eq "EventListener"; - return "EventTarget.h" if $type eq "EventTarget"; - return "SerializedScriptValue.h" if $type eq "SerializedScriptValue"; - return "ScriptValue.h" if $type eq "DOMObject"; - return "V8${type}.h"; -} - -sub CreateCustomSignature -{ - my $function = shift; - my $count = @{$function->parameters}; - my $name = $function->signature->name; - my $result = " const int ${name}Argc = ${count};\n" . - " v8::Handle<v8::FunctionTemplate> ${name}Argv[${name}Argc] = { "; - my $first = 1; - foreach my $parameter (@{$function->parameters}) { - if ($first) { $first = 0; } - else { $result .= ", "; } - if (IsWrapperType($parameter->type)) { - if ($parameter->type eq "XPathNSResolver") { - # Special case for XPathNSResolver. All other browsers accepts a callable, - # so, even though it's against IDL, accept objects here. - $result .= "v8::Handle<v8::FunctionTemplate>()"; - } else { - my $type = $parameter->type; - my $header = GetV8HeaderName($type); - $implIncludes{$header} = 1; - $result .= "V8${type}::GetRawTemplate()"; - } - } else { - $result .= "v8::Handle<v8::FunctionTemplate>()"; - } - } - $result .= " };\n"; - $result .= " v8::Handle<v8::Signature> ${name}Signature = v8::Signature::New(desc, ${name}Argc, ${name}Argv);\n"; - return $result; -} - - -sub RequiresCustomSignature -{ - my $function = shift; - # No signature needed for Custom function - if ($function->signature->extendedAttributes->{"Custom"} || - $function->signature->extendedAttributes->{"V8Custom"}) { - return 0; - } - # No signature needed for overloaded function - if (@{$function->{overloads}} > 1) { - return 0; - } - # Type checking is performed in the generated code - if ($function->signature->extendedAttributes->{"StrictTypeChecking"}) { - return 0; - } - foreach my $parameter (@{$function->parameters}) { - if ($parameter->extendedAttributes->{"Optional"} || $parameter->extendedAttributes->{"Callback"}) { - return 0; - } - } - - foreach my $parameter (@{$function->parameters}) { - if (IsWrapperType($parameter->type)) { - return 1; - } - } - return 0; -} - - -# FIXME: Sort this array. -my %non_wrapper_types = ( - 'float' => 1, - 'double' => 1, - 'int' => 1, - 'unsigned int' => 1, - 'short' => 1, - 'unsigned short' => 1, - 'long' => 1, - 'unsigned long' => 1, - 'boolean' => 1, - 'long long' => 1, - 'unsigned long long' => 1, - 'DOMString' => 1, - 'CompareHow' => 1, - 'SerializedScriptValue' => 1, - 'SVGPaintType' => 1, - 'DOMTimeStamp' => 1, - 'JSObject' => 1, - 'DOMObject' => 1, - 'EventTarget' => 1, - 'NodeFilter' => 1, - 'EventListener' => 1, - 'IDBKey' => 1, - 'OptionsObject' => 1, - 'Date' => 1, - 'MediaQueryListListener' => 1 -); - - -sub IsWrapperType -{ - my $type = $codeGenerator->StripModule(shift); - return !($non_wrapper_types{$type}); -} - -sub IsDOMNodeType -{ - my $type = shift; - - return 1 if $type eq 'Attr'; - return 1 if $type eq 'CDATASection'; - return 1 if $type eq 'Comment'; - return 1 if $type eq 'Document'; - return 1 if $type eq 'DocumentFragment'; - return 1 if $type eq 'DocumentType'; - return 1 if $type eq 'Element'; - return 1 if $type eq 'EntityReference'; - return 1 if $type eq 'HTMLCanvasElement'; - return 1 if $type eq 'HTMLDocument'; - return 1 if $type eq 'HTMLElement'; - return 1 if $type eq 'HTMLFormElement'; - return 1 if $type eq 'HTMLTableCaptionElement'; - return 1 if $type eq 'HTMLTableSectionElement'; - return 1 if $type eq 'Node'; - return 1 if $type eq 'ProcessingInstruction'; - return 1 if $type eq 'SVGElement'; - return 1 if $type eq 'SVGDocument'; - return 1 if $type eq 'SVGSVGElement'; - return 1 if $type eq 'SVGUseElement'; - return 1 if $type eq 'Text'; - - return 0; -} - - -sub ReturnNativeToJSValue -{ - my $signature = shift; - my $value = shift; - my $indent = shift; - my $type = GetTypeFromSignature($signature); - - return "return v8Boolean($value)" if $type eq "boolean"; - return "return v8::Handle<v8::Value>()" if $type eq "void"; # equivalent to v8::Undefined() - - # HTML5 says that unsigned reflected attributes should be in the range - # [0, 2^31). When a value isn't in this range, a default value (or 0) - # should be returned instead. - if ($signature->extendedAttributes->{"Reflect"} and ($type eq "unsigned long" or $type eq "unsigned short")) { - $value =~ s/getUnsignedIntegralAttribute/getIntegralAttribute/g; - return "return v8::Integer::NewFromUnsigned(std::max(0, " . $value . "))"; - } - - # For all the types where we use 'int' as the representation type, - # we use Integer::New which has a fast Smi conversion check. - my $nativeType = GetNativeType($type); - return "return v8::Integer::New($value)" if $nativeType eq "int"; - return "return v8::Integer::NewFromUnsigned($value)" if $nativeType eq "unsigned"; - - return "return v8DateOrNull($value)" if $type eq "Date"; - # long long and unsigned long long are not representable in ECMAScript. - return "return v8::Number::New(static_cast<double>($value))" if $type eq "long long" or $type eq "unsigned long long" or $type eq "DOMTimeStamp"; - return "return v8::Number::New($value)" if $codeGenerator->IsPrimitiveType($type) or $type eq "SVGPaintType"; - return "return $value.v8Value()" if $nativeType eq "ScriptValue"; - - if ($codeGenerator->IsStringType($type)) { - my $conv = $signature->extendedAttributes->{"ConvertNullStringTo"}; - if (defined $conv) { - return "return v8StringOrNull($value)" if $conv eq "Null"; - return "return v8StringOrUndefined($value)" if $conv eq "Undefined"; - return "return v8StringOrFalse($value)" if $conv eq "False"; - - die "Unknown value for ConvertNullStringTo extended attribute"; - } - $conv = $signature->extendedAttributes->{"ConvertScriptString"}; - return "return v8StringOrNull($value)" if $conv; - return "return v8String($value)"; - } - - AddIncludesForType($type); - - # special case for non-DOM node interfaces - if (IsDOMNodeType($type)) { - return "return toV8(${value}" . ($signature->extendedAttributes->{"ReturnsNew"} ? ", true)" : ")"); - } - - if ($type eq "EventTarget") { - return "return V8DOMWrapper::convertEventTargetToV8Object($value)"; - } - - if ($type eq "EventListener") { - $implIncludes{"V8AbstractEventListener.h"} = 1; - return "return ${value} ? v8::Handle<v8::Value>(static_cast<V8AbstractEventListener*>(${value})->getListenerObject(imp->scriptExecutionContext())) : v8::Handle<v8::Value>(v8::Null())"; - } - - if ($type eq "SerializedScriptValue") { - $implIncludes{"$type.h"} = 1; - return "return $value->deserialize()"; - } - - $implIncludes{"wtf/RefCounted.h"} = 1; - $implIncludes{"wtf/RefPtr.h"} = 1; - $implIncludes{"wtf/GetPtr.h"} = 1; - - return "return toV8($value)"; -} - -# Internal helper -sub WriteData -{ - if (defined($IMPL)) { - # Write content to file. - print $IMPL @implContentHeader; - - print $IMPL @implFixedHeader; - - foreach my $implInclude (sort keys(%implIncludes)) { - my $checkType = $implInclude; - $checkType =~ s/\.h//; - - if ($implInclude =~ /wtf/) { - print $IMPL "#include \<$implInclude\>\n"; - } else { - print $IMPL "#include \"$implInclude\"\n" unless $codeGenerator->IsSVGAnimatedType($checkType); - } - } - - print $IMPL "\n"; - print $IMPL @implContentDecls; - print $IMPL @implContent; - close($IMPL); - undef($IMPL); - - %implIncludes = (); - @implFixedHeader = (); - @implHeaderContent = (); - @implContentDecls = (); - @implContent = (); - } - - if (defined($HEADER)) { - # Write content to file. - print $HEADER @headerContent; - close($HEADER); - undef($HEADER); - - @headerContent = (); - } -} - -sub GetVisibleInterfaceName -{ - my $interfaceName = shift; - - return "DOMException" if $interfaceName eq "DOMCoreException"; - return "FormData" if $interfaceName eq "DOMFormData"; - return $interfaceName; -} - -sub GetCallbackClassName -{ - my $interfaceName = shift; - - return "V8CustomVoidCallback" if $interfaceName eq "VoidCallback"; - return "V8$interfaceName"; -} - -sub ConvertToV8Parameter -{ - my $signature = shift; - my $nativeType = shift; - my $variableName = shift; - my $value = shift; - my $suffix = shift; - - die "Wrong native type passed: $nativeType" unless $nativeType =~ /^V8Parameter/; - if ($signature->type eq "DOMString") { - $implIncludes{"V8BindingMacros.h"} = 1; - my $macro = "STRING_TO_V8PARAMETER_EXCEPTION_BLOCK"; - $macro .= "_$suffix" if $suffix; - return "$macro($nativeType, $variableName, $value);" - } else { - # Don't know how to properly check for conversion exceptions when $parameter->type is "DOMUserData" - return "$nativeType $variableName($value, true);"; - } -} - -# Returns the RuntimeEnabledFeatures function name that is hooked up to check if a method/attribute is enabled. -sub GetRuntimeEnableFunctionName -{ - my $signature = shift; - - # If a parameter is given (e.g. "EnabledAtRuntime=FeatureName") return the RuntimeEnabledFeatures::{FeatureName}Enabled() method. - return "RuntimeEnabledFeatures::" . $codeGenerator->WK_lcfirst($signature->extendedAttributes->{"EnabledAtRuntime"}) . "Enabled" if ($signature->extendedAttributes->{"EnabledAtRuntime"} && $signature->extendedAttributes->{"EnabledAtRuntime"} ne "1"); - - # Otherwise return a function named RuntimeEnabledFeatures::{methodName}Enabled(). - return "RuntimeEnabledFeatures::" . $codeGenerator->WK_lcfirst($signature->name) . "Enabled"; -} - -sub DebugPrint -{ - my $output = shift; - - print $output; - print "\n"; -} diff --git a/WebCore/bindings/scripts/IDLParser.pm b/WebCore/bindings/scripts/IDLParser.pm deleted file mode 100644 index 927deb9..0000000 --- a/WebCore/bindings/scripts/IDLParser.pm +++ /dev/null @@ -1,439 +0,0 @@ -# -# KDOM IDL parser -# -# Copyright (C) 2005 Nikolas Zimmermann <wildfox@kde.org> -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public -# License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. -# -# You should have received a copy of the GNU Library General Public License -# along with this library; see the file COPYING.LIB. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02110-1301, USA. -# - -package IDLParser; - -use strict; - -use IPC::Open2; -use IDLStructure; - -use constant MODE_UNDEF => 0; # Default mode. - -use constant MODE_MODULE => 10; # 'module' section -use constant MODE_INTERFACE => 11; # 'interface' section -use constant MODE_EXCEPTION => 12; # 'exception' section -use constant MODE_ALIAS => 13; # 'alias' section - -# Helper variables -my @temporaryContent = ""; - -my $parseMode = MODE_UNDEF; -my $preservedParseMode = MODE_UNDEF; - -my $beQuiet; # Should not display anything on STDOUT? -my $document = 0; # Will hold the resulting 'idlDocument' -my $parentsOnly = 0; # If 1, parse only enough to populate parents list - -# Default Constructor -sub new -{ - my $object = shift; - my $reference = { }; - - $document = 0; - $beQuiet = shift; - - bless($reference, $object); - return $reference; -} - -# Returns the parsed 'idlDocument' -sub Parse -{ - my $object = shift; - my $fileName = shift; - my $defines = shift; - my $preprocessor = shift; - $parentsOnly = shift; - - if (!$preprocessor) { - require Config; - my $gccLocation = ""; - if ($ENV{CC}) { - $gccLocation = $ENV{CC}; - } elsif (($Config::Config{'osname'}) =~ /solaris/i) { - $gccLocation = "/usr/sfw/bin/gcc"; - } else { - $gccLocation = "/usr/bin/gcc"; - } - $preprocessor = $gccLocation . " -E -P -x c++"; - } - - if (!$defines) { - $defines = ""; - } - - print " | *** Starting to parse $fileName...\n |\n" unless $beQuiet; - - my $pid = open2(\*PP_OUT, \*PP_IN, split(' ', $preprocessor), (map { "-D$_" } split(' ', $defines)), $fileName); - close PP_IN; - my @documentContent = <PP_OUT>; - close PP_OUT; - waitpid($pid, 0); - - my $dataAvailable = 0; - - # Simple IDL Parser (tm) - foreach (@documentContent) { - my $newParseMode = $object->DetermineParseMode($_); - - if ($newParseMode ne MODE_UNDEF) { - if ($dataAvailable eq 0) { - $dataAvailable = 1; # Start node building... - } else { - $object->ProcessSection(); - } - } - - # Update detected data stream mode... - if ($newParseMode ne MODE_UNDEF) { - $parseMode = $newParseMode; - } - - push(@temporaryContent, $_); - } - - # Check if there is anything remaining to parse... - if (($parseMode ne MODE_UNDEF) and ($#temporaryContent > 0)) { - $object->ProcessSection(); - } - - print " | *** Finished parsing!\n" unless $beQuiet; - - $document->fileName($fileName); - - return $document; -} - -sub ParseModule -{ - my $object = shift; - my $dataNode = shift; - - print " |- Trying to parse module...\n" unless $beQuiet; - - my $data = join("", @temporaryContent); - $data =~ /$IDLStructure::moduleSelector/; - - my $moduleName = (defined($1) ? $1 : die("Parsing error!\nSource:\n$data\n)")); - $dataNode->module($moduleName); - - print " |----> Module; NAME \"$moduleName\"\n |-\n |\n" unless $beQuiet; -} - -sub dumpExtendedAttributes -{ - my $padStr = shift; - my $attrs = shift; - - if (!%{$attrs}) { - return ""; - } - - my @temp; - while ((my $name, my $value) = each(%{$attrs})) { - push(@temp, "$name=$value"); - } - - return $padStr . "[" . join(", ", @temp) . "]"; -} - -sub parseExtendedAttributes -{ - my $str = shift; - $str =~ s/\[\s*(.*?)\s*\]/$1/g; - - my %attrs = (); - - foreach my $value (split(/\s*,\s*/, $str)) { - (my $name, my $val) = split(/\s*=\s*/, $value, 2); - - # Attributes with no value are set to be true - $val = 1 unless defined $val; - $attrs{$name} = $val; - die("Invalid extended attribute name: '$name'\n") if $name =~ /\s/; - } - - return \%attrs; -} - -sub ParseInterface -{ - my $object = shift; - my $dataNode = shift; - my $sectionName = shift; - - my $data = join("", @temporaryContent); - - # Look for end-of-interface mark - $data =~ /};/g; - $data = substr($data, index($data, $sectionName), pos($data) - length($data)); - - $data =~ s/[\n\r]/ /g; - - # Beginning of the regexp parsing magic - if ($sectionName eq "exception") { - print " |- Trying to parse exception...\n" unless $beQuiet; - - my $exceptionName = ""; - my $exceptionData = ""; - my $exceptionDataName = ""; - my $exceptionDataType = ""; - - # Match identifier of the exception, and enclosed data... - $data =~ /$IDLStructure::exceptionSelector/; - $exceptionName = (defined($1) ? $1 : die("Parsing error!\nSource:\n$data\n)")); - $exceptionData = (defined($2) ? $2 : die("Parsing error!\nSource:\n$data\n)")); - - ('' =~ /^/); # Reset variables needed for regexp matching - - # ... parse enclosed data (get. name & type) - $exceptionData =~ /$IDLStructure::exceptionSubSelector/; - $exceptionDataType = (defined($1) ? $1 : die("Parsing error!\nSource:\n$data\n)")); - $exceptionDataName = (defined($2) ? $2 : die("Parsing error!\nSource:\n$data\n)")); - - # Fill in domClass datastructure - $dataNode->name($exceptionName); - - my $newDataNode = new domAttribute(); - $newDataNode->type("readonly attribute"); - $newDataNode->signature(new domSignature()); - - $newDataNode->signature->name($exceptionDataName); - $newDataNode->signature->type($exceptionDataType); - - my $arrayRef = $dataNode->attributes; - push(@$arrayRef, $newDataNode); - - print " |----> Exception; NAME \"$exceptionName\" DATA TYPE \"$exceptionDataType\" DATA NAME \"$exceptionDataName\"\n |-\n |\n" unless $beQuiet; - } elsif ($sectionName eq "interface") { - print " |- Trying to parse interface...\n" unless $beQuiet; - - my $interfaceName = ""; - my $interfaceData = ""; - - # Match identifier of the interface, and enclosed data... - $data =~ /$IDLStructure::interfaceSelector/; - - my $interfaceExtendedAttributes = (defined($1) ? $1 : " "); chop($interfaceExtendedAttributes); - $interfaceName = (defined($2) ? $2 : die("Parsing error!\nSource:\n$data\n)")); - my $interfaceBase = (defined($3) ? $3 : ""); - $interfaceData = (defined($4) ? $4 : die("Parsing error!\nSource:\n$data\n)")); - - # Fill in known parts of the domClass datastructure now... - $dataNode->name($interfaceName); - $dataNode->extendedAttributes(parseExtendedAttributes($interfaceExtendedAttributes)); - - # Inheritance detection - my @interfaceParents = split(/,/, $interfaceBase); - foreach(@interfaceParents) { - my $line = $_; - $line =~ s/\s*//g; - - my $arrayRef = $dataNode->parents; - push(@$arrayRef, $line); - } - - return if $parentsOnly; - - $interfaceData =~ s/[\n\r]/ /g; - my @interfaceMethods = split(/;/, $interfaceData); - - foreach my $line (@interfaceMethods) { - if ($line =~ /\Wattribute\W/) { - $line =~ /$IDLStructure::interfaceAttributeSelector/; - - my $attributeType = (defined($1) ? $1 : die("Parsing error!\nSource:\n$line\n)")); - my $attributeExtendedAttributes = (defined($2) ? $2 : " "); chop($attributeExtendedAttributes); - - my $attributeDataType = (defined($3) ? $3 : die("Parsing error!\nSource:\n$line\n)")); - my $attributeDataName = (defined($4) ? $4 : die("Parsing error!\nSource:\n$line\n)")); - - ('' =~ /^/); # Reset variables needed for regexp matching - - $line =~ /$IDLStructure::getterRaisesSelector/; - my $getterException = (defined($1) ? $1 : ""); - - $line =~ /$IDLStructure::setterRaisesSelector/; - my $setterException = (defined($1) ? $1 : ""); - - my $newDataNode = new domAttribute(); - $newDataNode->type($attributeType); - $newDataNode->signature(new domSignature()); - - $newDataNode->signature->name($attributeDataName); - $newDataNode->signature->type($attributeDataType); - $newDataNode->signature->extendedAttributes(parseExtendedAttributes($attributeExtendedAttributes)); - - my $arrayRef = $dataNode->attributes; - push(@$arrayRef, $newDataNode); - - print " | |> Attribute; TYPE \"$attributeType\" DATA NAME \"$attributeDataName\" DATA TYPE \"$attributeDataType\" GET EXCEPTION? \"$getterException\" SET EXCEPTION? \"$setterException\"" . - dumpExtendedAttributes("\n | ", $newDataNode->signature->extendedAttributes) . "\n" unless $beQuiet; - - $getterException =~ s/\s+//g; - $setterException =~ s/\s+//g; - @{$newDataNode->getterExceptions} = split(/,/, $getterException); - @{$newDataNode->setterExceptions} = split(/,/, $setterException); - } elsif (($line !~ s/^\s*$//g) and ($line !~ /^\s*const/)) { - $line =~ /$IDLStructure::interfaceMethodSelector/ or die "Parsing error!\nSource:\n$line\n)"; - - my $methodExtendedAttributes = (defined($1) ? $1 : " "); chop($methodExtendedAttributes); - my $methodType = (defined($2) ? $2 : die("Parsing error!\nSource:\n$line\n)")); - my $methodName = (defined($3) ? $3 : die("Parsing error!\nSource:\n$line\n)")); - my $methodSignature = (defined($4) ? $4 : die("Parsing error!\nSource:\n$line\n)")); - - ('' =~ /^/); # Reset variables needed for regexp matching - - $line =~ /$IDLStructure::raisesSelector/; - my $methodException = (defined($1) ? $1 : ""); - - my $newDataNode = new domFunction(); - - $newDataNode->signature(new domSignature()); - $newDataNode->signature->name($methodName); - $newDataNode->signature->type($methodType); - $newDataNode->signature->extendedAttributes(parseExtendedAttributes($methodExtendedAttributes)); - - print " | |- Method; TYPE \"$methodType\" NAME \"$methodName\" EXCEPTION? \"$methodException\"" . - dumpExtendedAttributes("\n | ", $newDataNode->signature->extendedAttributes) . "\n" unless $beQuiet; - - $methodException =~ s/\s+//g; - @{$newDataNode->raisesExceptions} = split(/,/, $methodException); - - # Split arguments at commas but only if the comma - # is not within attribute brackets, expressed here - # as being followed by a ']' without a preceding '['. - # Note that this assumes that attributes don't nest. - my @params = split(/,(?![^[]*\])/, $methodSignature); - foreach(@params) { - my $line = $_; - - $line =~ /$IDLStructure::interfaceParameterSelector/; - my $paramDirection = $1; - my $paramExtendedAttributes = (defined($2) ? $2 : " "); chop($paramExtendedAttributes); - my $paramType = (defined($3) ? $3 : die("Parsing error!\nSource:\n$line\n)")); - my $paramName = (defined($4) ? $4 : die("Parsing error!\nSource:\n$line\n)")); - - my $paramDataNode = new domSignature(); - $paramDataNode->direction($paramDirection); - $paramDataNode->name($paramName); - $paramDataNode->type($paramType); - $paramDataNode->extendedAttributes(parseExtendedAttributes($paramExtendedAttributes)); - - my $arrayRef = $newDataNode->parameters; - push(@$arrayRef, $paramDataNode); - - print " | |> Param; TYPE \"$paramType\" NAME \"$paramName\"" . - dumpExtendedAttributes("\n | ", $paramDataNode->extendedAttributes) . "\n" unless $beQuiet; - } - - my $arrayRef = $dataNode->functions; - push(@$arrayRef, $newDataNode); - } elsif ($line =~ /^\s*const/) { - $line =~ /$IDLStructure::constantSelector/; - my $constType = (defined($1) ? $1 : die("Parsing error!\nSource:\n$line\n)")); - my $constName = (defined($2) ? $2 : die("Parsing error!\nSource:\n$line\n)")); - my $constValue = (defined($3) ? $3 : die("Parsing error!\nSource:\n$line\n)")); - - my $newDataNode = new domConstant(); - $newDataNode->name($constName); - $newDataNode->type($constType); - $newDataNode->value($constValue); - - my $arrayRef = $dataNode->constants; - push(@$arrayRef, $newDataNode); - - print " | |> Constant; TYPE \"$constType\" NAME \"$constName\" VALUE \"$constValue\"\n" unless $beQuiet; - } - } - - print " |----> Interface; NAME \"$interfaceName\"" . - dumpExtendedAttributes("\n | ", $dataNode->extendedAttributes) . "\n |-\n |\n" unless $beQuiet; - } -} - -# Internal helper -sub DetermineParseMode -{ - my $object = shift; - my $line = shift; - - my $mode = MODE_UNDEF; - if ($_ =~ /module/) { - $mode = MODE_MODULE; - } elsif ($_ =~ /interface/) { - $mode = MODE_INTERFACE; - } elsif ($_ =~ /exception/) { - $mode = MODE_EXCEPTION; - } elsif ($_ =~ /(\A|\b)alias/) { - # The (\A|\b) above is needed so we don't match attributes - # whose names contain the substring "alias". - $mode = MODE_ALIAS; - } - - return $mode; -} - -# Internal helper -sub ProcessSection -{ - my $object = shift; - - if ($parseMode eq MODE_MODULE) { - die ("Two modules in one file! Fatal error!\n") if ($document ne 0); - $document = new idlDocument(); - $object->ParseModule($document); - } elsif ($parseMode eq MODE_INTERFACE) { - my $node = new domClass(); - $object->ParseInterface($node, "interface"); - - die ("No module specified! Fatal Error!\n") if ($document eq 0); - my $arrayRef = $document->classes; - push(@$arrayRef, $node); - } elsif($parseMode eq MODE_EXCEPTION) { - my $node = new domClass(); - $object->ParseInterface($node, "exception"); - - die ("No module specified! Fatal Error!\n") if ($document eq 0); - my $arrayRef = $document->classes; - push(@$arrayRef, $node); - } elsif($parseMode eq MODE_ALIAS) { - print " |- Trying to parse alias...\n" unless $beQuiet; - - my $line = join("", @temporaryContent); - $line =~ /$IDLStructure::aliasSelector/; - - my $interfaceName = (defined($1) ? $1 : die("Parsing error!\nSource:\n$line\n)")); - my $wrapperName = (defined($2) ? $2 : die("Parsing error!\nSource:\n$line\n)")); - - print " |----> Alias; INTERFACE \"$interfaceName\" WRAPPER \"$wrapperName\"\n |-\n |\n" unless $beQuiet; - - # FIXME: Check if alias is already in aliases - my $aliases = $document->aliases; - $aliases->{$interfaceName} = $wrapperName; - } - - @temporaryContent = ""; -} - -1; diff --git a/WebCore/bindings/scripts/IDLStructure.pm b/WebCore/bindings/scripts/IDLStructure.pm deleted file mode 100644 index f9dd4ab..0000000 --- a/WebCore/bindings/scripts/IDLStructure.pm +++ /dev/null @@ -1,112 +0,0 @@ -# -# KDOM IDL parser -# -# Copyright (C) 2005 Nikolas Zimmermann <wildfox@kde.org> -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public -# License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. -# -# You should have received a copy of the GNU Library General Public License -# along with this library; see the file COPYING.LIB. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02110-1301, USA. -# - -package IDLStructure; - -use strict; - -use Class::Struct; - -# Used to represent a parsed IDL document -struct( idlDocument => { - module => '$', # Module identifier - classes => '@', # All parsed interfaces - fileName => '$' # file name -}); - -# Used to represent 'interface' / 'exception' blocks -struct( domClass => { - name => '$', # Class identifier (without module) - parents => '@', # List of strings - constants => '@', # List of 'domConstant' - functions => '@', # List of 'domFunction' - attributes => '@', # List of 'domAttribute' - extendedAttributes => '$', # Extended attributes -}); - -# Used to represent domClass contents (name of method, signature) -struct( domFunction => { - signature => '$', # Return type/Object name/extended attributes - parameters => '@', # List of 'domSignature' - raisesExceptions => '@', # Possibly raised exceptions. -}); - -# Used to represent domClass contents (name of attribute, signature) -struct( domAttribute => { - type => '$', # Attribute type (including namespace) - signature => '$', # Attribute signature - getterExceptions => '@', # Possibly raised exceptions. - setterExceptions => '@', # Possibly raised exceptions. -}); - -# Used to represent a map of 'variable name' <-> 'variable type' -struct( domSignature => { - direction => '$', # Variable direction (in or out) - name => '$', # Variable name - type => '$', # Variable type - extendedAttributes => '$' # Extended attributes -}); - -# Used to represent string constants -struct( domConstant => { - name => '$', # DOM Constant identifier - type => '$', # Type of data - value => '$', # Constant value -}); - -# Helpers -our $idlId = '[a-zA-Z0-9]'; # Generic identifier -our $idlIdNs = '[a-zA-Z0-9:]'; # Generic identifier including namespace -our $idlIdNsList = '[a-zA-Z0-9:,\ ]'; # List of Generic identifiers including namespace - -our $idlType = '[a-zA-Z0-9_]'; # Generic type/"value string" identifier -# Match a string value, a hexadecimal number, or an integral number. -# Note: some of the characters that are allowed in the string value may not be allowed by -# interfaceSelector. -our $constValue = '("[^"\r\n]*")|(0[xX][a-fA-F0-9]+)|(-?[0-9]*)'; -our $idlDataType = '[a-zA-Z0-9\ ]'; # Generic data type identifier - -# Magic IDL parsing regular expressions -my $supportedTypes = "((?:unsigned )?(?:int|short|(?:long )?long)|(?:$idlIdNs*))"; - -# Special IDL notations -our $extendedAttributeSyntax = '\[[^]]*\]'; # Used for extended attributes - -# Regular expression based IDL 'syntactical tokenizer' used in the IDLParser -our $moduleSelector = 'module\s*(' . $idlId . '*)\s*{'; -our $moduleNSSelector = 'module\s*(' . $idlId . '*)\s*\[ns\s*(' . $idlIdNs . '*)\s*(' . $idlIdNs . '*)\]\s*;'; -our $constantSelector = 'const\s*' . $supportedTypes . '\s*(' . $idlType . '*)\s*=\s*(' . $constValue . ')'; -our $raisesSelector = 'raises\s*\((' . $idlIdNsList . '*)\s*\)'; -our $getterRaisesSelector = '\bgetter\s+raises\s*\((' . $idlIdNsList . '*)\s*\)'; -our $setterRaisesSelector = '\bsetter\s+raises\s*\((' . $idlIdNsList . '*)\s*\)'; - -our $typeNamespaceSelector = '((?:' . $idlId . '*::)*)\s*(' . $idlDataType . '*)'; - -our $exceptionSelector = 'exception\s*(' . $idlIdNs . '*)\s*([a-zA-Z\s{;]*};)'; -our $exceptionSubSelector = '{\s*' . $supportedTypes . '\s*(' . $idlType . '*)\s*;\s*}'; - -our $interfaceSelector = 'interface\s*((?:' . $extendedAttributeSyntax . ' )?)(' . $idlIdNs . '*)\s*(?::(\s*[^{]*))?{([-a-zA-Z0-9_"=\s(),;:\[\]&\|]*)'; -our $interfaceMethodSelector = '\s*((?:' . $extendedAttributeSyntax . ' )?)' . $supportedTypes . '\s*(' . $idlIdNs . '*)\s*\(\s*([a-zA-Z0-9:\s,=\[\]]*)'; -our $interfaceParameterSelector = '(in|out)\s*((?:' . $extendedAttributeSyntax . ' )?)' . $supportedTypes . '\s*(' . $idlIdNs . '*)'; - -our $interfaceAttributeSelector = '\s*(readonly attribute|attribute)\s*(' . $extendedAttributeSyntax . ' )?' . $supportedTypes . '\s*(' . $idlType . '*)'; - -1; diff --git a/WebCore/bindings/scripts/InFilesParser.pm b/WebCore/bindings/scripts/InFilesParser.pm deleted file mode 100644 index 6539380..0000000 --- a/WebCore/bindings/scripts/InFilesParser.pm +++ /dev/null @@ -1,154 +0,0 @@ -#!/usr/bin/perl -w - -# Copyright (C) 2008 Julien Chaffraix <jchaffraix@webkit.org> -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY -# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -use strict; - -package InFilesParser; - -my $isParsingCommonParameters; -my $hasStartedParsing; - -# Helper functions - -sub trimComment -{ - my $string = shift; - $string =~ s/#.+$//; - chomp($string); - return $string; -} - -sub trimWS -{ - my $string = shift; - $string =~ s/^\s+//; - $string =~ s/\s+$//; - chomp($string); - return $string; -} - -sub trimQuoteAndWS -{ - my $string = shift; - $string =~ s/\"([^\"]+)\"/$1/; - return trimWS($string); -} - -# Default constructor - -sub new -{ - my $object = shift; - my $reference = { }; - - # Initialize the parser. - $isParsingCommonParameters = 1; - $hasStartedParsing = 0; - - bless($reference, $object); - return $reference; -} - -# parse take 3 attributes: -# - the filestream to read from (the caller has to open / close it). -# - the commonParameterHandler called when parsing the first part of the file with the parameter and the value. -# - the perTagHandler called for each optional parameter with the element name, the parameter and its value. -# If no parameter were provided, it is called once with an empty parameter and value. -sub parse($) -{ - my $object = shift; - my $fileStream = shift; # IO::File only - my $commonParameterHandler = shift; - my $perTagHandler = shift; - - foreach (<$fileStream>) { - # Ignore whitespace, in case the .in files have the wrong EOL - # markers and those are getting treated as whitespace. - $_ = trimWS($_); - - # Empty line, change from common parameter part - # to per tag part if we have started parsing. - if (/^$/) { - if ($hasStartedParsing) { - $isParsingCommonParameters = 0; - } - next; - } - - # There may be a few empty lines at the beginning of the file - # so detect the first non empty line which starts the common - # parameters part. - $hasStartedParsing = 1; - - if (/^#/) { - next; - } - - $_ = trimComment($_); - - if ($isParsingCommonParameters) { - my ($name, $value) = split '=', $_; - - $name = trimWS($name); - if (defined($value)) { - $value = trimQuoteAndWS($value); - } else { - # We default to 1 as it eases the syntax. - $value = "1"; - } - - &$commonParameterHandler($name, $value); - } else { - # Parsing per-tag parameters. - - # Split the tag name ($1) from the optionnal parameter(s) ($2) - /^(\S+)\s*(.*)$/; - my $elementName = $1; - - if ($2) { - my @options = split "," , $2; - my ($option, $value); - for (my $i = 0; $i < @options; ++$i) { - ($option, $value) = split "=", $options[$i]; - $option = trimWS($option); - if (defined($value)) { - $value = trimQuoteAndWS($value); - } else { - # We default to 1 as it eases the syntax. - $value = "1"; - } - - &$perTagHandler($elementName, $option, $value); - } - } else { - # No parameter was given so call it with empty strings. - &$perTagHandler($elementName, "", ""); - } - } - } -} - -1; diff --git a/WebCore/bindings/scripts/generate-bindings.pl b/WebCore/bindings/scripts/generate-bindings.pl deleted file mode 100755 index 57a3928..0000000 --- a/WebCore/bindings/scripts/generate-bindings.pl +++ /dev/null @@ -1,83 +0,0 @@ -#!/usr/bin/perl -w -# -# Copyright (C) 2005 Apple Computer, Inc. -# Copyright (C) 2006 Anders Carlsson <andersca@mac.com> -# -# This file is part of WebKit -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public -# License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. -# -# You should have received a copy of the GNU Library General Public License -# along with this library; see the file COPYING.LIB. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02110-1301, USA. -# - -# This script is a temporary hack. -# Files are generated in the source directory, when they really should go -# to the DerivedSources directory. -# This should also eventually be a build rule driven off of .idl files -# however a build rule only solution is blocked by several radars: -# <rdar://problems/4251781&4251785> - -use strict; - -use File::Path; -use Getopt::Long; -use Cwd; - -use IDLParser; -use CodeGenerator; - -my @idlDirectories; -my $outputDirectory; -my $outputHeadersDirectory; -my $generator; -my $defines; -my $filename; -my $prefix; -my $preprocessor; -my $writeDependencies; -my $verbose; - -GetOptions('include=s@' => \@idlDirectories, - 'outputDir=s' => \$outputDirectory, - 'outputHeadersDir=s' => \$outputHeadersDirectory, - 'generator=s' => \$generator, - 'defines=s' => \$defines, - 'filename=s' => \$filename, - 'prefix=s' => \$prefix, - 'preprocessor=s' => \$preprocessor, - 'verbose' => \$verbose, - 'write-dependencies' => \$writeDependencies); - -my $idlFile = $ARGV[0]; - -die('Must specify input file.') unless defined($idlFile); -die('Must specify generator') unless defined($generator); -die('Must specify output directory.') unless defined($outputDirectory); -die('Must specify defines') unless defined($defines); - -if (!$outputHeadersDirectory) { - $outputHeadersDirectory = $outputDirectory; -} -if ($verbose) { - print "$generator: $idlFile\n"; -} -$defines =~ s/^\s+|\s+$//g; # trim whitespace - -# Parse the given IDL file. -my $parser = IDLParser->new(!$verbose); -my $document = $parser->Parse($idlFile, $defines, $preprocessor); - -# Generate desired output for given IDL file. -my $codeGen = CodeGenerator->new(\@idlDirectories, $generator, $outputDirectory, $outputHeadersDirectory, 0, $preprocessor, $writeDependencies, $verbose); -$codeGen->ProcessDocument($document, $defines); diff --git a/WebCore/bindings/scripts/gobject-generate-headers.pl b/WebCore/bindings/scripts/gobject-generate-headers.pl deleted file mode 100644 index 1017406..0000000 --- a/WebCore/bindings/scripts/gobject-generate-headers.pl +++ /dev/null @@ -1,77 +0,0 @@ -#!/usr/bin/perl -w -# -# Copyright (C) 2009 Adam Dingle <adam@yorba.org> -# -# This file is part of WebKit -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public -# License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. -# -# You should have received a copy of the GNU Library General Public License -# aint with this library; see the file COPYING.LIB. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02110-1301, USA. -# - -my $classlist = <STDIN>; -chomp($classlist); -my @classes = split / /, $classlist; -@classes = sort @classes; - -print <<EOF; -/* This file is part of the WebKit open source project. - This file has been generated by gobject-generate-headers.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -EOF - -my $outType = $ARGV[0]; -my $header; -if ($outType eq "defines") { - $header = "webkitdomdefines_h"; -} elsif ($outType eq "gdom") { - $header = "webkitdom_h"; -} else { - die "unknown output type"; -} - -print "#ifndef ${header}\n"; -print "#define ${header}\n"; -print "\n"; - -if ($outType eq "defines") { - foreach my $class (@classes) { - print "typedef struct _WebKitDOM${class} WebKitDOM${class};\n"; - print "typedef struct _WebKitDOM${class}Class WebKitDOM${class}Class;\n"; - print "\n"; - } -} elsif ($outType eq "gdom") { - foreach my $class (@classes) { - print "#include <webkit/WebKitDOM${class}.h>\n"; - } -} - -print "\n"; -print "#endif\n"; diff --git a/WebCore/bindings/scripts/test/CPP/WebDOMTestCallback.cpp b/WebCore/bindings/scripts/test/CPP/WebDOMTestCallback.cpp deleted file mode 100644 index a58da40..0000000 --- a/WebCore/bindings/scripts/test/CPP/WebDOMTestCallback.cpp +++ /dev/null @@ -1,120 +0,0 @@ -/* - * This file is part of the WebKit open source project. - * This file has been generated by generate-bindings.pl. DO NOT MODIFY! - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ - -#include "config.h" - -#if ENABLE(DATABASE) - -#include "WebDOMTestCallback.h" - -#include "Class1.h" -#include "Class2.h" -#include "Class3.h" -#include "KURL.h" -#include "TestCallback.h" -#include "WebDOMClass1.h" -#include "WebDOMClass2.h" -#include "WebDOMClass3.h" -#include "WebDOMString.h" -#include "WebExceptionHandler.h" -#include "wtf/text/AtomicString.h" -#include <wtf/GetPtr.h> -#include <wtf/RefPtr.h> - -struct WebDOMTestCallback::WebDOMTestCallbackPrivate { - WebDOMTestCallbackPrivate(WebCore::TestCallback* object = 0) - : impl(object) - { - } - - RefPtr<WebCore::TestCallback> impl; -}; - -WebDOMTestCallback::WebDOMTestCallback() - : WebDOMObject() - , m_impl(0) -{ -} - -WebDOMTestCallback::WebDOMTestCallback(WebCore::TestCallback* impl) - : WebDOMObject() - , m_impl(new WebDOMTestCallbackPrivate(impl)) -{ -} - -WebDOMTestCallback::WebDOMTestCallback(const WebDOMTestCallback& copy) - : WebDOMObject() -{ - m_impl = copy.impl() ? new WebDOMTestCallbackPrivate(copy.impl()) : 0; -} - -WebDOMTestCallback& WebDOMTestCallback::operator=(const WebDOMTestCallback& copy) -{ - delete m_impl; - m_impl = copy.impl() ? new WebDOMTestCallbackPrivate(copy.impl()) : 0; - return *this; -} - -WebCore::TestCallback* WebDOMTestCallback::impl() const -{ - return m_impl ? m_impl->impl.get() : 0; -} - -WebDOMTestCallback::~WebDOMTestCallback() -{ - delete m_impl; - m_impl = 0; -} - -bool WebDOMTestCallback::callbackWithClass1Param(const WebDOMClass1& class1Param) -{ - if (!impl()) - return false; - - return impl()->callbackWithClass1Param(toWebCore(class1Param)); -} - -bool WebDOMTestCallback::callbackWithClass2Param(const WebDOMClass2& class2Param, const WebDOMString& strArg) -{ - if (!impl()) - return false; - - return impl()->callbackWithClass2Param(toWebCore(class2Param), strArg); -} - -int WebDOMTestCallback::callbackWithNonBoolReturnType(const WebDOMClass3& class3Param) -{ - if (!impl()) - return 0; - - return impl()->callbackWithNonBoolReturnType(toWebCore(class3Param)); -} - -WebCore::TestCallback* toWebCore(const WebDOMTestCallback& wrapper) -{ - return wrapper.impl(); -} - -WebDOMTestCallback toWebKit(WebCore::TestCallback* value) -{ - return WebDOMTestCallback(value); -} - -#endif // ENABLE(DATABASE) diff --git a/WebCore/bindings/scripts/test/CPP/WebDOMTestCallback.h b/WebCore/bindings/scripts/test/CPP/WebDOMTestCallback.h deleted file mode 100644 index 91ff787..0000000 --- a/WebCore/bindings/scripts/test/CPP/WebDOMTestCallback.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (C) Research In Motion Limited 2010. All rights reserved. - * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. - * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com> - * Copyright (C) Research In Motion Limited 2010. All rights reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ - -#ifndef WebDOMTestCallback_h -#define WebDOMTestCallback_h - -#if ENABLE(DATABASE) - -#include <WebDOMObject.h> -#include <WebDOMString.h> - -namespace WebCore { -class TestCallback; -}; - -class WebDOMClass1; -class WebDOMClass2; -class WebDOMClass3; -class WebDOMClass5; -class WebDOMClass6; - -class WebDOMTestCallback : public WebDOMObject { -public: - WebDOMTestCallback(); - explicit WebDOMTestCallback(WebCore::TestCallback*); - WebDOMTestCallback(const WebDOMTestCallback&); - WebDOMTestCallback& operator=(const WebDOMTestCallback&); - virtual ~WebDOMTestCallback(); - - bool callbackWithClass1Param(const WebDOMClass1& class1Param); - bool callbackWithClass2Param(const WebDOMClass2& class2Param, const WebDOMString& strArg); - int callbackWithNonBoolReturnType(const WebDOMClass3& class3Param); - int customCallback(const WebDOMClass5& class5Param, const WebDOMClass6& class6Param); - - WebCore::TestCallback* impl() const; - -protected: - struct WebDOMTestCallbackPrivate; - WebDOMTestCallbackPrivate* m_impl; -}; - -WebCore::TestCallback* toWebCore(const WebDOMTestCallback&); -WebDOMTestCallback toWebKit(WebCore::TestCallback*); - -#endif -#endif // ENABLE(DATABASE) - diff --git a/WebCore/bindings/scripts/test/CPP/WebDOMTestInterface.cpp b/WebCore/bindings/scripts/test/CPP/WebDOMTestInterface.cpp deleted file mode 100644 index 7fa4af3..0000000 --- a/WebCore/bindings/scripts/test/CPP/WebDOMTestInterface.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/* - * This file is part of the WebKit open source project. - * This file has been generated by generate-bindings.pl. DO NOT MODIFY! - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ - -#include "config.h" - -#if ENABLE(Condition1) || ENABLE(Condition2) - -#include "WebDOMTestInterface.h" - -#include "TestInterface.h" -#include "WebExceptionHandler.h" -#include <wtf/GetPtr.h> -#include <wtf/RefPtr.h> - -struct WebDOMTestInterface::WebDOMTestInterfacePrivate { - WebDOMTestInterfacePrivate(WebCore::TestInterface* object = 0) - : impl(object) - { - } - - RefPtr<WebCore::TestInterface> impl; -}; - -WebDOMTestInterface::WebDOMTestInterface() - : WebDOMObject() - , m_impl(0) -{ -} - -WebDOMTestInterface::WebDOMTestInterface(WebCore::TestInterface* impl) - : WebDOMObject() - , m_impl(new WebDOMTestInterfacePrivate(impl)) -{ -} - -WebDOMTestInterface::WebDOMTestInterface(const WebDOMTestInterface& copy) - : WebDOMObject() -{ - m_impl = copy.impl() ? new WebDOMTestInterfacePrivate(copy.impl()) : 0; -} - -WebDOMTestInterface& WebDOMTestInterface::operator=(const WebDOMTestInterface& copy) -{ - delete m_impl; - m_impl = copy.impl() ? new WebDOMTestInterfacePrivate(copy.impl()) : 0; - return *this; -} - -WebCore::TestInterface* WebDOMTestInterface::impl() const -{ - return m_impl ? m_impl->impl.get() : 0; -} - -WebDOMTestInterface::~WebDOMTestInterface() -{ - delete m_impl; - m_impl = 0; -} - -WebCore::TestInterface* toWebCore(const WebDOMTestInterface& wrapper) -{ - return wrapper.impl(); -} - -WebDOMTestInterface toWebKit(WebCore::TestInterface* value) -{ - return WebDOMTestInterface(value); -} - -#endif // ENABLE(Condition1) || ENABLE(Condition2) diff --git a/WebCore/bindings/scripts/test/CPP/WebDOMTestInterface.h b/WebCore/bindings/scripts/test/CPP/WebDOMTestInterface.h deleted file mode 100644 index 5db5db8..0000000 --- a/WebCore/bindings/scripts/test/CPP/WebDOMTestInterface.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (C) Research In Motion Limited 2010. All rights reserved. - * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. - * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com> - * Copyright (C) Research In Motion Limited 2010. All rights reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ - -#ifndef WebDOMTestInterface_h -#define WebDOMTestInterface_h - -#if ENABLE(Condition1) || ENABLE(Condition2) - -#include <WebDOMObject.h> -#include <WebDOMString.h> - -namespace WebCore { -class TestInterface; -}; - - -class WebDOMTestInterface : public WebDOMObject { -public: - WebDOMTestInterface(); - explicit WebDOMTestInterface(WebCore::TestInterface*); - WebDOMTestInterface(const WebDOMTestInterface&); - WebDOMTestInterface& operator=(const WebDOMTestInterface&); - virtual ~WebDOMTestInterface(); - - - WebCore::TestInterface* impl() const; - -protected: - struct WebDOMTestInterfacePrivate; - WebDOMTestInterfacePrivate* m_impl; -}; - -WebCore::TestInterface* toWebCore(const WebDOMTestInterface&); -WebDOMTestInterface toWebKit(WebCore::TestInterface*); - -#endif -#endif // ENABLE(Condition1) || ENABLE(Condition2) - diff --git a/WebCore/bindings/scripts/test/CPP/WebDOMTestMediaQueryListListener.cpp b/WebCore/bindings/scripts/test/CPP/WebDOMTestMediaQueryListListener.cpp deleted file mode 100644 index 7543fc4..0000000 --- a/WebCore/bindings/scripts/test/CPP/WebDOMTestMediaQueryListListener.cpp +++ /dev/null @@ -1,92 +0,0 @@ -/* - * This file is part of the WebKit open source project. - * This file has been generated by generate-bindings.pl. DO NOT MODIFY! - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ - -#include "config.h" -#include "WebDOMTestMediaQueryListListener.h" - -#include "MediaQueryListListener.h" -#include "TestMediaQueryListListener.h" -#include "WebDOMMediaQueryListListener.h" -#include "WebExceptionHandler.h" -#include <wtf/GetPtr.h> -#include <wtf/RefPtr.h> - -struct WebDOMTestMediaQueryListListener::WebDOMTestMediaQueryListListenerPrivate { - WebDOMTestMediaQueryListListenerPrivate(WebCore::TestMediaQueryListListener* object = 0) - : impl(object) - { - } - - RefPtr<WebCore::TestMediaQueryListListener> impl; -}; - -WebDOMTestMediaQueryListListener::WebDOMTestMediaQueryListListener() - : WebDOMObject() - , m_impl(0) -{ -} - -WebDOMTestMediaQueryListListener::WebDOMTestMediaQueryListListener(WebCore::TestMediaQueryListListener* impl) - : WebDOMObject() - , m_impl(new WebDOMTestMediaQueryListListenerPrivate(impl)) -{ -} - -WebDOMTestMediaQueryListListener::WebDOMTestMediaQueryListListener(const WebDOMTestMediaQueryListListener& copy) - : WebDOMObject() -{ - m_impl = copy.impl() ? new WebDOMTestMediaQueryListListenerPrivate(copy.impl()) : 0; -} - -WebDOMTestMediaQueryListListener& WebDOMTestMediaQueryListListener::operator=(const WebDOMTestMediaQueryListListener& copy) -{ - delete m_impl; - m_impl = copy.impl() ? new WebDOMTestMediaQueryListListenerPrivate(copy.impl()) : 0; - return *this; -} - -WebCore::TestMediaQueryListListener* WebDOMTestMediaQueryListListener::impl() const -{ - return m_impl ? m_impl->impl.get() : 0; -} - -WebDOMTestMediaQueryListListener::~WebDOMTestMediaQueryListListener() -{ - delete m_impl; - m_impl = 0; -} - -void WebDOMTestMediaQueryListListener::method(const WebDOMMediaQueryListListener& listener) -{ - if (!impl()) - return; - - impl()->method(toWebCore(listener)); -} - -WebCore::TestMediaQueryListListener* toWebCore(const WebDOMTestMediaQueryListListener& wrapper) -{ - return wrapper.impl(); -} - -WebDOMTestMediaQueryListListener toWebKit(WebCore::TestMediaQueryListListener* value) -{ - return WebDOMTestMediaQueryListListener(value); -} diff --git a/WebCore/bindings/scripts/test/CPP/WebDOMTestMediaQueryListListener.h b/WebCore/bindings/scripts/test/CPP/WebDOMTestMediaQueryListListener.h deleted file mode 100644 index 8f89836..0000000 --- a/WebCore/bindings/scripts/test/CPP/WebDOMTestMediaQueryListListener.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (C) Research In Motion Limited 2010. All rights reserved. - * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. - * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com> - * Copyright (C) Research In Motion Limited 2010. All rights reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ - -#ifndef WebDOMTestMediaQueryListListener_h -#define WebDOMTestMediaQueryListListener_h - -#include <WebDOMObject.h> -#include <WebDOMString.h> - -namespace WebCore { -class TestMediaQueryListListener; -}; - -class WebDOMMediaQueryListListener; - -class WebDOMTestMediaQueryListListener : public WebDOMObject { -public: - WebDOMTestMediaQueryListListener(); - explicit WebDOMTestMediaQueryListListener(WebCore::TestMediaQueryListListener*); - WebDOMTestMediaQueryListListener(const WebDOMTestMediaQueryListListener&); - WebDOMTestMediaQueryListListener& operator=(const WebDOMTestMediaQueryListListener&); - virtual ~WebDOMTestMediaQueryListListener(); - - void method(const WebDOMMediaQueryListListener& listener); - - WebCore::TestMediaQueryListListener* impl() const; - -protected: - struct WebDOMTestMediaQueryListListenerPrivate; - WebDOMTestMediaQueryListListenerPrivate* m_impl; -}; - -WebCore::TestMediaQueryListListener* toWebCore(const WebDOMTestMediaQueryListListener&); -WebDOMTestMediaQueryListListener toWebKit(WebCore::TestMediaQueryListListener*); - -#endif diff --git a/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.cpp b/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.cpp deleted file mode 100644 index 65e5bf3..0000000 --- a/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.cpp +++ /dev/null @@ -1,834 +0,0 @@ -/* - * This file is part of the WebKit open source project. - * This file has been generated by generate-bindings.pl. DO NOT MODIFY! - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ - -#include "config.h" -#include "WebDOMTestObj.h" - -#include "HTMLNames.h" -#include "IDBKey.h" -#include "KURL.h" -#include "OptionsObject.h" -#include "SerializedScriptValue.h" -#include "TestObj.h" -#include "WebDOMIDBKey.h" -#include "WebDOMOptionsObject.h" -#include "WebDOMString.h" -#include "WebExceptionHandler.h" -#include "WebNativeEventListener.h" -#include "wtf/text/AtomicString.h" -#include <wtf/GetPtr.h> -#include <wtf/RefPtr.h> - -struct WebDOMTestObj::WebDOMTestObjPrivate { - WebDOMTestObjPrivate(WebCore::TestObj* object = 0) - : impl(object) - { - } - - RefPtr<WebCore::TestObj> impl; -}; - -WebDOMTestObj::WebDOMTestObj() - : WebDOMObject() - , m_impl(0) -{ -} - -WebDOMTestObj::WebDOMTestObj(WebCore::TestObj* impl) - : WebDOMObject() - , m_impl(new WebDOMTestObjPrivate(impl)) -{ -} - -WebDOMTestObj::WebDOMTestObj(const WebDOMTestObj& copy) - : WebDOMObject() -{ - m_impl = copy.impl() ? new WebDOMTestObjPrivate(copy.impl()) : 0; -} - -WebDOMTestObj& WebDOMTestObj::operator=(const WebDOMTestObj& copy) -{ - delete m_impl; - m_impl = copy.impl() ? new WebDOMTestObjPrivate(copy.impl()) : 0; - return *this; -} - -WebCore::TestObj* WebDOMTestObj::impl() const -{ - return m_impl ? m_impl->impl.get() : 0; -} - -WebDOMTestObj::~WebDOMTestObj() -{ - delete m_impl; - m_impl = 0; -} - -int WebDOMTestObj::readOnlyIntAttr() const -{ - if (!impl()) - return 0; - - return impl()->readOnlyIntAttr(); -} - -WebDOMString WebDOMTestObj::readOnlyStringAttr() const -{ - if (!impl()) - return WebDOMString(); - - return static_cast<const WTF::String&>(impl()->readOnlyStringAttr()); -} - -WebDOMTestObj WebDOMTestObj::readOnlyTestObjAttr() const -{ - if (!impl()) - return WebDOMTestObj(); - - return toWebKit(WTF::getPtr(impl()->readOnlyTestObjAttr())); -} - -short WebDOMTestObj::shortAttr() const -{ - if (!impl()) - return 0; - - return impl()->shortAttr(); -} - -void WebDOMTestObj::setShortAttr(short newShortAttr) -{ - if (!impl()) - return; - - impl()->setShortAttr(newShortAttr); -} - -unsigned short WebDOMTestObj::unsignedShortAttr() const -{ - if (!impl()) - return 0; - - return impl()->unsignedShortAttr(); -} - -void WebDOMTestObj::setUnsignedShortAttr(unsigned short newUnsignedShortAttr) -{ - if (!impl()) - return; - - impl()->setUnsignedShortAttr(newUnsignedShortAttr); -} - -int WebDOMTestObj::intAttr() const -{ - if (!impl()) - return 0; - - return impl()->intAttr(); -} - -void WebDOMTestObj::setIntAttr(int newIntAttr) -{ - if (!impl()) - return; - - impl()->setIntAttr(newIntAttr); -} - -long long WebDOMTestObj::longLongAttr() const -{ - if (!impl()) - return 0; - - return impl()->longLongAttr(); -} - -void WebDOMTestObj::setLongLongAttr(long long newLongLongAttr) -{ - if (!impl()) - return; - - impl()->setLongLongAttr(newLongLongAttr); -} - -unsigned long long WebDOMTestObj::unsignedLongLongAttr() const -{ - if (!impl()) - return 0; - - return impl()->unsignedLongLongAttr(); -} - -void WebDOMTestObj::setUnsignedLongLongAttr(unsigned long long newUnsignedLongLongAttr) -{ - if (!impl()) - return; - - impl()->setUnsignedLongLongAttr(newUnsignedLongLongAttr); -} - -WebDOMString WebDOMTestObj::stringAttr() const -{ - if (!impl()) - return WebDOMString(); - - return static_cast<const WTF::String&>(impl()->stringAttr()); -} - -void WebDOMTestObj::setStringAttr(const WebDOMString& newStringAttr) -{ - if (!impl()) - return; - - impl()->setStringAttr(newStringAttr); -} - -WebDOMTestObj WebDOMTestObj::testObjAttr() const -{ - if (!impl()) - return WebDOMTestObj(); - - return toWebKit(WTF::getPtr(impl()->testObjAttr())); -} - -void WebDOMTestObj::setTestObjAttr(const WebDOMTestObj& newTestObjAttr) -{ - if (!impl()) - return; - - impl()->setTestObjAttr(toWebCore(newTestObjAttr)); -} - -WebDOMTestObj WebDOMTestObj::XMLObjAttr() const -{ - if (!impl()) - return WebDOMTestObj(); - - return toWebKit(WTF::getPtr(impl()->xmlObjAttr())); -} - -void WebDOMTestObj::setXMLObjAttr(const WebDOMTestObj& newXMLObjAttr) -{ - if (!impl()) - return; - - impl()->setXMLObjAttr(toWebCore(newXMLObjAttr)); -} - -bool WebDOMTestObj::create() const -{ - if (!impl()) - return false; - - return impl()->isCreate(); -} - -void WebDOMTestObj::setCreate(bool newCreate) -{ - if (!impl()) - return; - - impl()->setCreate(newCreate); -} - -WebDOMString WebDOMTestObj::reflectedStringAttr() const -{ - if (!impl()) - return WebDOMString(); - - return static_cast<const WTF::String&>(impl()->getAttribute(WebCore::HTMLNames::reflectedstringattrAttr)); -} - -void WebDOMTestObj::setReflectedStringAttr(const WebDOMString& newReflectedStringAttr) -{ - if (!impl()) - return; - - impl()->setAttribute(WebCore::HTMLNames::reflectedstringattrAttr, newReflectedStringAttr); -} - -int WebDOMTestObj::reflectedIntegralAttr() const -{ - if (!impl()) - return 0; - - return impl()->getIntegralAttribute(WebCore::HTMLNames::reflectedintegralattrAttr); -} - -void WebDOMTestObj::setReflectedIntegralAttr(int newReflectedIntegralAttr) -{ - if (!impl()) - return; - - impl()->setIntegralAttribute(WebCore::HTMLNames::reflectedintegralattrAttr, newReflectedIntegralAttr); -} - -unsigned WebDOMTestObj::reflectedUnsignedIntegralAttr() const -{ - if (!impl()) - return unsigned(); - - return impl()->getUnsignedIntegralAttribute(WebCore::HTMLNames::reflectedunsignedintegralattrAttr); -} - -void WebDOMTestObj::setReflectedUnsignedIntegralAttr(unsigned newReflectedUnsignedIntegralAttr) -{ - if (!impl()) - return; - - impl()->setUnsignedIntegralAttribute(WebCore::HTMLNames::reflectedunsignedintegralattrAttr, newReflectedUnsignedIntegralAttr); -} - -bool WebDOMTestObj::reflectedBooleanAttr() const -{ - if (!impl()) - return false; - - return impl()->hasAttribute(WebCore::HTMLNames::reflectedbooleanattrAttr); -} - -void WebDOMTestObj::setReflectedBooleanAttr(bool newReflectedBooleanAttr) -{ - if (!impl()) - return; - - impl()->setBooleanAttribute(WebCore::HTMLNames::reflectedbooleanattrAttr, newReflectedBooleanAttr); -} - -WebDOMString WebDOMTestObj::reflectedURLAttr() const -{ - if (!impl()) - return WebDOMString(); - - return static_cast<const WTF::String&>(impl()->getURLAttribute(WebCore::HTMLNames::reflectedurlattrAttr)); -} - -void WebDOMTestObj::setReflectedURLAttr(const WebDOMString& newReflectedURLAttr) -{ - if (!impl()) - return; - - impl()->setAttribute(WebCore::HTMLNames::reflectedurlattrAttr, newReflectedURLAttr); -} - -WebDOMString WebDOMTestObj::reflectedNonEmptyURLAttr() const -{ - if (!impl()) - return WebDOMString(); - - return static_cast<const WTF::String&>(impl()->getNonEmptyURLAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr)); -} - -void WebDOMTestObj::setReflectedNonEmptyURLAttr(const WebDOMString& newReflectedNonEmptyURLAttr) -{ - if (!impl()) - return; - - impl()->setAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr, newReflectedNonEmptyURLAttr); -} - -WebDOMString WebDOMTestObj::reflectedStringAttr() const -{ - if (!impl()) - return WebDOMString(); - - return static_cast<const WTF::String&>(impl()->getAttribute(WebCore::HTMLNames::customContentStringAttrAttr)); -} - -void WebDOMTestObj::setReflectedStringAttr(const WebDOMString& newReflectedStringAttr) -{ - if (!impl()) - return; - - impl()->setAttribute(WebCore::HTMLNames::customContentStringAttrAttr, newReflectedStringAttr); -} - -int WebDOMTestObj::reflectedCustomIntegralAttr() const -{ - if (!impl()) - return 0; - - return impl()->getIntegralAttribute(WebCore::HTMLNames::customContentIntegralAttrAttr); -} - -void WebDOMTestObj::setReflectedCustomIntegralAttr(int newReflectedCustomIntegralAttr) -{ - if (!impl()) - return; - - impl()->setIntegralAttribute(WebCore::HTMLNames::customContentIntegralAttrAttr, newReflectedCustomIntegralAttr); -} - -bool WebDOMTestObj::reflectedCustomBooleanAttr() const -{ - if (!impl()) - return false; - - return impl()->hasAttribute(WebCore::HTMLNames::customContentBooleanAttrAttr); -} - -void WebDOMTestObj::setReflectedCustomBooleanAttr(bool newReflectedCustomBooleanAttr) -{ - if (!impl()) - return; - - impl()->setBooleanAttribute(WebCore::HTMLNames::customContentBooleanAttrAttr, newReflectedCustomBooleanAttr); -} - -WebDOMString WebDOMTestObj::reflectedCustomURLAttr() const -{ - if (!impl()) - return WebDOMString(); - - return static_cast<const WTF::String&>(impl()->getURLAttribute(WebCore::HTMLNames::customContentURLAttrAttr)); -} - -void WebDOMTestObj::setReflectedCustomURLAttr(const WebDOMString& newReflectedCustomURLAttr) -{ - if (!impl()) - return; - - impl()->setAttribute(WebCore::HTMLNames::customContentURLAttrAttr, newReflectedCustomURLAttr); -} - -WebDOMString WebDOMTestObj::reflectedCustomNonEmptyURLAttr() const -{ - if (!impl()) - return WebDOMString(); - - return static_cast<const WTF::String&>(impl()->getNonEmptyURLAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr)); -} - -void WebDOMTestObj::setReflectedCustomNonEmptyURLAttr(const WebDOMString& newReflectedCustomNonEmptyURLAttr) -{ - if (!impl()) - return; - - impl()->setAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr, newReflectedCustomNonEmptyURLAttr); -} - -int WebDOMTestObj::attrWithGetterException() const -{ - if (!impl()) - return 0; - - WebCore::ExceptionCode ec = 0; - int result = impl()->attrWithGetterException(ec); - webDOMRaiseError(static_cast<WebDOMExceptionCode>(ec)); - return result; -} - -void WebDOMTestObj::setAttrWithGetterException(int newAttrWithGetterException) -{ - if (!impl()) - return; - - WebCore::ExceptionCode ec = 0; - impl()->setAttrWithGetterException(newAttrWithGetterException, ec); - webDOMRaiseError(static_cast<WebDOMExceptionCode>(ec)); -} - -int WebDOMTestObj::attrWithSetterException() const -{ - if (!impl()) - return 0; - - return impl()->attrWithSetterException(); -} - -void WebDOMTestObj::setAttrWithSetterException(int newAttrWithSetterException) -{ - if (!impl()) - return; - - WebCore::ExceptionCode ec = 0; - impl()->setAttrWithSetterException(newAttrWithSetterException, ec); - webDOMRaiseError(static_cast<WebDOMExceptionCode>(ec)); -} - -WebDOMString WebDOMTestObj::stringAttrWithGetterException() const -{ - if (!impl()) - return WebDOMString(); - - WebCore::ExceptionCode ec = 0; - WebDOMString result = impl()->stringAttrWithGetterException(ec); - webDOMRaiseError(static_cast<WebDOMExceptionCode>(ec)); - return static_cast<const WTF::String&>(result); -} - -void WebDOMTestObj::setStringAttrWithGetterException(const WebDOMString& newStringAttrWithGetterException) -{ - if (!impl()) - return; - - WebCore::ExceptionCode ec = 0; - impl()->setStringAttrWithGetterException(newStringAttrWithGetterException, ec); - webDOMRaiseError(static_cast<WebDOMExceptionCode>(ec)); -} - -WebDOMString WebDOMTestObj::stringAttrWithSetterException() const -{ - if (!impl()) - return WebDOMString(); - - return static_cast<const WTF::String&>(impl()->stringAttrWithSetterException()); -} - -void WebDOMTestObj::setStringAttrWithSetterException(const WebDOMString& newStringAttrWithSetterException) -{ - if (!impl()) - return; - - WebCore::ExceptionCode ec = 0; - impl()->setStringAttrWithSetterException(newStringAttrWithSetterException, ec); - webDOMRaiseError(static_cast<WebDOMExceptionCode>(ec)); -} - -WebDOMString WebDOMTestObj::scriptStringAttr() const -{ - if (!impl()) - return WebDOMString(); - - return static_cast<const WTF::String&>(impl()->scriptStringAttr()); -} - -#if ENABLE(Condition1) -int WebDOMTestObj::conditionalAttr1() const -{ - if (!impl()) - return 0; - - return impl()->conditionalAttr1(); -} - -void WebDOMTestObj::setConditionalAttr1(int newConditionalAttr1) -{ - if (!impl()) - return; - - impl()->setConditionalAttr1(newConditionalAttr1); -} - -#endif -#if ENABLE(Condition1) && ENABLE(Condition2) -int WebDOMTestObj::conditionalAttr2() const -{ - if (!impl()) - return 0; - - return impl()->conditionalAttr2(); -} - -void WebDOMTestObj::setConditionalAttr2(int newConditionalAttr2) -{ - if (!impl()) - return; - - impl()->setConditionalAttr2(newConditionalAttr2); -} - -#endif -#if ENABLE(Condition1) || ENABLE(Condition2) -int WebDOMTestObj::conditionalAttr3() const -{ - if (!impl()) - return 0; - - return impl()->conditionalAttr3(); -} - -void WebDOMTestObj::setConditionalAttr3(int newConditionalAttr3) -{ - if (!impl()) - return; - - impl()->setConditionalAttr3(newConditionalAttr3); -} - -#endif -int WebDOMTestObj::description() const -{ - if (!impl()) - return 0; - - return impl()->description(); -} - -int WebDOMTestObj::id() const -{ - if (!impl()) - return 0; - - return impl()->id(); -} - -void WebDOMTestObj::setId(int newId) -{ - if (!impl()) - return; - - impl()->setId(newId); -} - -WebDOMString WebDOMTestObj::hash() const -{ - if (!impl()) - return WebDOMString(); - - return static_cast<const WTF::String&>(impl()->hash()); -} - -void WebDOMTestObj::voidMethod() -{ - if (!impl()) - return; - - impl()->voidMethod(); -} - -void WebDOMTestObj::voidMethodWithArgs(int intArg, const WebDOMString& strArg, const WebDOMTestObj& objArg) -{ - if (!impl()) - return; - - impl()->voidMethodWithArgs(intArg, strArg, toWebCore(objArg)); -} - -int WebDOMTestObj::intMethod() -{ - if (!impl()) - return 0; - - return impl()->intMethod(); -} - -int WebDOMTestObj::intMethodWithArgs(int intArg, const WebDOMString& strArg, const WebDOMTestObj& objArg) -{ - if (!impl()) - return 0; - - return impl()->intMethodWithArgs(intArg, strArg, toWebCore(objArg)); -} - -WebDOMTestObj WebDOMTestObj::objMethod() -{ - if (!impl()) - return WebDOMTestObj(); - - return toWebKit(WTF::getPtr(impl()->objMethod())); -} - -WebDOMTestObj WebDOMTestObj::objMethodWithArgs(int intArg, const WebDOMString& strArg, const WebDOMTestObj& objArg) -{ - if (!impl()) - return WebDOMTestObj(); - - return toWebKit(WTF::getPtr(impl()->objMethodWithArgs(intArg, strArg, toWebCore(objArg)))); -} - -WebDOMTestObj WebDOMTestObj::methodThatRequiresAllArgs(const WebDOMString& strArg, const WebDOMTestObj& objArg) -{ - if (!impl()) - return WebDOMTestObj(); - - return toWebKit(WTF::getPtr(impl()->methodThatRequiresAllArgs(strArg, toWebCore(objArg)))); -} - -WebDOMTestObj WebDOMTestObj::methodThatRequiresAllArgsAndThrows(const WebDOMString& strArg, const WebDOMTestObj& objArg) -{ - if (!impl()) - return WebDOMTestObj(); - - WebCore::ExceptionCode ec = 0; - WebDOMTestObj result = toWebKit(WTF::getPtr(impl()->methodThatRequiresAllArgsAndThrows(strArg, toWebCore(objArg), ec))); - webDOMRaiseError(static_cast<WebDOMExceptionCode>(ec)); - return result; -} - -void WebDOMTestObj::serializedValue(const WebDOMString& serializedArg) -{ - if (!impl()) - return; - - impl()->serializedValue(WebCore::SerializedScriptValue::create(WTF::String(serializedArg))); -} - -void WebDOMTestObj::idbKey(const WebDOMIDBKey& key) -{ - if (!impl()) - return; - - impl()->idbKey(toWebCore(key)); -} - -void WebDOMTestObj::optionsObject(const WebDOMOptionsObject& oo, const WebDOMOptionsObject& ooo) -{ - if (!impl()) - return; - - impl()->optionsObject(toWebCore(oo), toWebCore(ooo)); -} - -void WebDOMTestObj::methodWithException() -{ - if (!impl()) - return; - - WebCore::ExceptionCode ec = 0; - impl()->methodWithException(ec); - webDOMRaiseError(static_cast<WebDOMExceptionCode>(ec)); -} - -void WebDOMTestObj::addEventListener(const WebDOMString& type, const WebDOMEventListener& listener, bool useCapture) -{ - if (!impl()) - return; - - impl()->addEventListener(type, toWebCore(listener), useCapture); -} - -void WebDOMTestObj::removeEventListener(const WebDOMString& type, const WebDOMEventListener& listener, bool useCapture) -{ - if (!impl()) - return; - - impl()->removeEventListener(type, toWebCore(listener), useCapture); -} - -void WebDOMTestObj::withDynamicFrame() -{ - if (!impl()) - return; - - impl()->withDynamicFrame(); -} - -void WebDOMTestObj::withDynamicFrameAndArg(int intArg) -{ - if (!impl()) - return; - - impl()->withDynamicFrameAndArg(intArg); -} - -void WebDOMTestObj::withDynamicFrameAndOptionalArg(int intArg, int optionalArg) -{ - if (!impl()) - return; - - impl()->withDynamicFrameAndOptionalArg(intArg, optionalArg); -} - -void WebDOMTestObj::withScriptStateVoid() -{ - if (!impl()) - return; - - impl()->withScriptStateVoid(); -} - -WebDOMTestObj WebDOMTestObj::withScriptStateObj() -{ - if (!impl()) - return WebDOMTestObj(); - - return toWebKit(WTF::getPtr(impl()->withScriptStateObj())); -} - -void WebDOMTestObj::withScriptStateVoidException() -{ - if (!impl()) - return; - - WebCore::ExceptionCode ec = 0; - impl()->withScriptStateVoidException(ec); - webDOMRaiseError(static_cast<WebDOMExceptionCode>(ec)); -} - -WebDOMTestObj WebDOMTestObj::withScriptStateObjException() -{ - if (!impl()) - return WebDOMTestObj(); - - WebCore::ExceptionCode ec = 0; - WebDOMTestObj result = toWebKit(WTF::getPtr(impl()->withScriptStateObjException(ec))); - webDOMRaiseError(static_cast<WebDOMExceptionCode>(ec)); - return result; -} - -void WebDOMTestObj::withScriptExecutionContext() -{ - if (!impl()) - return; - - impl()->withScriptExecutionContext(); -} - -void WebDOMTestObj::methodWithOptionalArg(int opt) -{ - if (!impl()) - return; - - impl()->methodWithOptionalArg(opt); -} - -void WebDOMTestObj::methodWithNonOptionalArgAndOptionalArg(int nonOpt, int opt) -{ - if (!impl()) - return; - - impl()->methodWithNonOptionalArgAndOptionalArg(nonOpt, opt); -} - -void WebDOMTestObj::methodWithNonOptionalArgAndTwoOptionalArgs(int nonOpt, int opt1, int opt2) -{ - if (!impl()) - return; - - impl()->methodWithNonOptionalArgAndTwoOptionalArgs(nonOpt, opt1, opt2); -} - -void WebDOMTestObj::classMethod() -{ - if (!impl()) - return; - - impl()->classMethod(); -} - -int WebDOMTestObj::classMethodWithOptional(int arg) -{ - if (!impl()) - return 0; - - return impl()->classMethodWithOptional(arg); -} - -WebCore::TestObj* toWebCore(const WebDOMTestObj& wrapper) -{ - return wrapper.impl(); -} - -WebDOMTestObj toWebKit(WebCore::TestObj* value) -{ - return WebDOMTestObj(value); -} diff --git a/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.h b/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.h deleted file mode 100644 index abbbf2f..0000000 --- a/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.h +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Copyright (C) Research In Motion Limited 2010. All rights reserved. - * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. - * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com> - * Copyright (C) Research In Motion Limited 2010. All rights reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ - -#ifndef WebDOMTestObj_h -#define WebDOMTestObj_h - -#include <WebDOMObject.h> -#include <WebDOMString.h> - -namespace WebCore { -class TestObj; -}; - -class WebDOMEventListener; -class WebDOMIDBKey; -class WebDOMOptionsObject; -class WebDOMString; -class WebDOMTestObj; - -class WebDOMTestObj : public WebDOMObject { -public: - WebDOMTestObj(); - explicit WebDOMTestObj(WebCore::TestObj*); - WebDOMTestObj(const WebDOMTestObj&); - WebDOMTestObj& operator=(const WebDOMTestObj&); - virtual ~WebDOMTestObj(); - - enum { - WEBDOM_CONST_VALUE_0 = 0, - WEBDOM_CONST_VALUE_1 = 1, - WEBDOM_CONST_VALUE_2 = 2, - WEBDOM_CONST_VALUE_4 = 4, - WEBDOM_CONST_VALUE_8 = 8, - WEBDOM_CONST_VALUE_9 = -1, - WEBDOM_CONST_VALUE_10 = "my constant string", - WEBDOM_CONST_VALUE_11 = 0xffffffff, - WEBDOM_CONST_VALUE_12 = 0x01, - WEBDOM_CONST_VALUE_13 = 0X20, - WEBDOM_CONST_VALUE_14 = 0x1abc - }; - - int readOnlyIntAttr() const; - WebDOMString readOnlyStringAttr() const; - WebDOMTestObj readOnlyTestObjAttr() const; - short shortAttr() const; - void setShortAttr(short); - unsigned short unsignedShortAttr() const; - void setUnsignedShortAttr(unsigned short); - int intAttr() const; - void setIntAttr(int); - long long longLongAttr() const; - void setLongLongAttr(long long); - unsigned long long unsignedLongLongAttr() const; - void setUnsignedLongLongAttr(unsigned long long); - WebDOMString stringAttr() const; - void setStringAttr(const WebDOMString&); - WebDOMTestObj testObjAttr() const; - void setTestObjAttr(const WebDOMTestObj&); - WebDOMTestObj XMLObjAttr() const; - void setXMLObjAttr(const WebDOMTestObj&); - bool create() const; - void setCreate(bool); - WebDOMString reflectedStringAttr() const; - void setReflectedStringAttr(const WebDOMString&); - int reflectedIntegralAttr() const; - void setReflectedIntegralAttr(int); - unsigned reflectedUnsignedIntegralAttr() const; - void setReflectedUnsignedIntegralAttr(unsigned); - bool reflectedBooleanAttr() const; - void setReflectedBooleanAttr(bool); - WebDOMString reflectedURLAttr() const; - void setReflectedURLAttr(const WebDOMString&); - WebDOMString reflectedNonEmptyURLAttr() const; - void setReflectedNonEmptyURLAttr(const WebDOMString&); - WebDOMString reflectedStringAttr() const; - void setReflectedStringAttr(const WebDOMString&); - int reflectedCustomIntegralAttr() const; - void setReflectedCustomIntegralAttr(int); - bool reflectedCustomBooleanAttr() const; - void setReflectedCustomBooleanAttr(bool); - WebDOMString reflectedCustomURLAttr() const; - void setReflectedCustomURLAttr(const WebDOMString&); - WebDOMString reflectedCustomNonEmptyURLAttr() const; - void setReflectedCustomNonEmptyURLAttr(const WebDOMString&); - int attrWithGetterException() const; - void setAttrWithGetterException(int); - int attrWithSetterException() const; - void setAttrWithSetterException(int); - WebDOMString stringAttrWithGetterException() const; - void setStringAttrWithGetterException(const WebDOMString&); - WebDOMString stringAttrWithSetterException() const; - void setStringAttrWithSetterException(const WebDOMString&); - int customAttr() const; - void setCustomAttr(int); - WebDOMString scriptStringAttr() const; -#if ENABLE(Condition1) - int conditionalAttr1() const; - void setConditionalAttr1(int); -#endif -#if ENABLE(Condition1) && ENABLE(Condition2) - int conditionalAttr2() const; - void setConditionalAttr2(int); -#endif -#if ENABLE(Condition1) || ENABLE(Condition2) - int conditionalAttr3() const; - void setConditionalAttr3(int); -#endif - int description() const; - int id() const; - void setId(int); - WebDOMString hash() const; - - void voidMethod(); - void voidMethodWithArgs(int intArg, const WebDOMString& strArg, const WebDOMTestObj& objArg); - int intMethod(); - int intMethodWithArgs(int intArg, const WebDOMString& strArg, const WebDOMTestObj& objArg); - WebDOMTestObj objMethod(); - WebDOMTestObj objMethodWithArgs(int intArg, const WebDOMString& strArg, const WebDOMTestObj& objArg); - WebDOMTestObj methodThatRequiresAllArgs(const WebDOMString& strArg, const WebDOMTestObj& objArg); - WebDOMTestObj methodThatRequiresAllArgsAndThrows(const WebDOMString& strArg, const WebDOMTestObj& objArg); - void serializedValue(const WebDOMString& serializedArg); - void idbKey(const WebDOMIDBKey& key); - void optionsObject(const WebDOMOptionsObject& oo, const WebDOMOptionsObject& ooo); - void methodWithException(); - void customMethod(); - void customMethodWithArgs(int intArg, const WebDOMString& strArg, const WebDOMTestObj& objArg); - void addEventListener(const WebDOMString& type, const WebDOMEventListener& listener, bool useCapture); - void removeEventListener(const WebDOMString& type, const WebDOMEventListener& listener, bool useCapture); - void withDynamicFrame(); - void withDynamicFrameAndArg(int intArg); - void withDynamicFrameAndOptionalArg(int intArg, int optionalArg); - void withDynamicFrameAndUserGesture(int intArg); - void withDynamicFrameAndUserGestureASAD(int intArg, int optionalArg); - void withScriptStateVoid(); - WebDOMTestObj withScriptStateObj(); - void withScriptStateVoidException(); - WebDOMTestObj withScriptStateObjException(); - void withScriptExecutionContext(); - void methodWithOptionalArg(int opt); - void methodWithNonOptionalArgAndOptionalArg(int nonOpt, int opt); - void methodWithNonOptionalArgAndTwoOptionalArgs(int nonOpt, int opt1, int opt2); - void classMethod(); - int classMethodWithOptional(int arg); - - WebCore::TestObj* impl() const; - -protected: - struct WebDOMTestObjPrivate; - WebDOMTestObjPrivate* m_impl; -}; - -WebCore::TestObj* toWebCore(const WebDOMTestObj&); -WebDOMTestObj toWebKit(WebCore::TestObj*); - -#endif diff --git a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestCallback.cpp b/WebCore/bindings/scripts/test/GObject/WebKitDOMTestCallback.cpp deleted file mode 100644 index 9c8fa59..0000000 --- a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestCallback.cpp +++ /dev/null @@ -1,206 +0,0 @@ -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include <glib-object.h> -#include "config.h" - -#if ENABLE(DATABASE) - -#include <wtf/GetPtr.h> -#include <wtf/RefPtr.h> -#include "DOMObjectCache.h" -#include "ExceptionCode.h" -#include "JSMainThreadExecState.h" -#include "TestCallback.h" -#include "WebKitDOMBinding.h" -#include "gobject/ConvertToUTF8String.h" -#include "webkit/WebKitDOMClass1.h" -#include "webkit/WebKitDOMClass1Private.h" -#include "webkit/WebKitDOMClass2.h" -#include "webkit/WebKitDOMClass2Private.h" -#include "webkit/WebKitDOMClass3.h" -#include "webkit/WebKitDOMClass3Private.h" -#include "webkit/WebKitDOMTestCallback.h" -#include "webkit/WebKitDOMTestCallbackPrivate.h" -#include "webkitmarshal.h" -#include "webkitprivate.h" - -namespace WebKit { - -WebKitDOMTestCallback* kit(WebCore::TestCallback* obj) -{ - g_return_val_if_fail(obj, 0); - - if (gpointer ret = DOMObjectCache::get(obj)) - return static_cast<WebKitDOMTestCallback*>(ret); - - return static_cast<WebKitDOMTestCallback*>(DOMObjectCache::put(obj, WebKit::wrapTestCallback(obj))); -} - -} // namespace WebKit // - -gboolean -webkit_dom_test_callback_callback_with_class1param(WebKitDOMTestCallback* self, WebKitDOMClass1* class1param) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestCallback * item = WebKit::core(self); - g_return_val_if_fail(class1param, 0); - WebCore::Class1 * converted_class1param = NULL; - if (class1param != NULL) { - converted_class1param = WebKit::core(class1param); - g_return_val_if_fail(converted_class1param, 0); - } - gboolean res = item->callbackWithClass1Param(converted_class1param); - return res; -} - -gboolean -webkit_dom_test_callback_callback_with_class2param(WebKitDOMTestCallback* self, WebKitDOMClass2* class2param, const gchar* str_arg) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestCallback * item = WebKit::core(self); - g_return_val_if_fail(class2param, 0); - g_return_val_if_fail(str_arg, 0); - WebCore::Class2 * converted_class2param = NULL; - if (class2param != NULL) { - converted_class2param = WebKit::core(class2param); - g_return_val_if_fail(converted_class2param, 0); - } - WTF::String converted_str_arg = WTF::String::fromUTF8(str_arg); - gboolean res = item->callbackWithClass2Param(converted_class2param, converted_str_arg); - return res; -} - -glong -webkit_dom_test_callback_callback_with_non_bool_return_type(WebKitDOMTestCallback* self, WebKitDOMClass3* class3param) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestCallback * item = WebKit::core(self); - g_return_val_if_fail(class3param, 0); - WebCore::Class3 * converted_class3param = NULL; - if (class3param != NULL) { - converted_class3param = WebKit::core(class3param); - g_return_val_if_fail(converted_class3param, 0); - } - glong res = item->callbackWithNonBoolReturnType(converted_class3param); - return res; -} - - -G_DEFINE_TYPE(WebKitDOMTestCallback, webkit_dom_test_callback, WEBKIT_TYPE_DOM_OBJECT) - -namespace WebKit { - -WebCore::TestCallback* core(WebKitDOMTestCallback* request) -{ - g_return_val_if_fail(request, 0); - - WebCore::TestCallback* coreObject = static_cast<WebCore::TestCallback*>(WEBKIT_DOM_OBJECT(request)->coreObject); - g_return_val_if_fail(coreObject, 0); - - return coreObject; -} - -} // namespace WebKit -enum { - PROP_0, -}; - - -static void webkit_dom_test_callback_finalize(GObject* object) -{ - WebKitDOMObject* dom_object = WEBKIT_DOM_OBJECT(object); - - if (dom_object->coreObject) { - WebCore::TestCallback* coreObject = static_cast<WebCore::TestCallback *>(dom_object->coreObject); - - WebKit::DOMObjectCache::forget(coreObject); - coreObject->deref(); - - dom_object->coreObject = NULL; - } - - G_OBJECT_CLASS(webkit_dom_test_callback_parent_class)->finalize(object); -} - -static void webkit_dom_test_callback_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec) -{ - WebCore::JSMainThreadNullState state; - switch (prop_id) { - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; - } -} - - -static void webkit_dom_test_callback_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec) -{ - WebCore::JSMainThreadNullState state; - switch (prop_id) { - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; - } -} - - -static void webkit_dom_test_callback_constructed(GObject* object) -{ - - if (G_OBJECT_CLASS(webkit_dom_test_callback_parent_class)->constructed) - G_OBJECT_CLASS(webkit_dom_test_callback_parent_class)->constructed(object); -} - -static void webkit_dom_test_callback_class_init(WebKitDOMTestCallbackClass* requestClass) -{ - GObjectClass *gobjectClass = G_OBJECT_CLASS(requestClass); - gobjectClass->finalize = webkit_dom_test_callback_finalize; - gobjectClass->set_property = webkit_dom_test_callback_set_property; - gobjectClass->get_property = webkit_dom_test_callback_get_property; - gobjectClass->constructed = webkit_dom_test_callback_constructed; - - - -} - -static void webkit_dom_test_callback_init(WebKitDOMTestCallback* request) -{ -} - -namespace WebKit { -WebKitDOMTestCallback* wrapTestCallback(WebCore::TestCallback* coreObject) -{ - g_return_val_if_fail(coreObject, 0); - - /* We call ref() rather than using a C++ smart pointer because we can't store a C++ object - * in a C-allocated GObject structure. See the finalize() code for the - * matching deref(). - */ - coreObject->ref(); - - return WEBKIT_DOM_TEST_CALLBACK(g_object_new(WEBKIT_TYPE_DOM_TEST_CALLBACK, - "core-object", coreObject, NULL)); -} -} // namespace WebKit -#endif /* ENABLE(DATABASE) */ diff --git a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestCallback.h b/WebCore/bindings/scripts/test/GObject/WebKitDOMTestCallback.h deleted file mode 100644 index 4f0ac91..0000000 --- a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestCallback.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef WebKitDOMTestCallback_h -#define WebKitDOMTestCallback_h - -#include "webkit/webkitdomdefines.h" -#include <glib-object.h> -#include <webkit/webkitdefines.h> -#include "webkit/WebKitDOMObject.h" - - -G_BEGIN_DECLS -#define WEBKIT_TYPE_DOM_TEST_CALLBACK (webkit_dom_test_callback_get_type()) -#define WEBKIT_DOM_TEST_CALLBACK(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_DOM_TEST_CALLBACK, WebKitDOMTestCallback)) -#define WEBKIT_DOM_TEST_CALLBACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_DOM_TEST_CALLBACK, WebKitDOMTestCallbackClass) -#define WEBKIT_DOM_IS_TEST_CALLBACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_DOM_TEST_CALLBACK)) -#define WEBKIT_DOM_IS_TEST_CALLBACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_DOM_TEST_CALLBACK)) -#define WEBKIT_DOM_TEST_CALLBACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_DOM_TEST_CALLBACK, WebKitDOMTestCallbackClass)) - -struct _WebKitDOMTestCallback { - WebKitDOMObject parent_instance; -}; - -struct _WebKitDOMTestCallbackClass { - WebKitDOMObjectClass parent_class; -}; - -WEBKIT_API GType -webkit_dom_test_callback_get_type (void); - -WEBKIT_API gboolean -webkit_dom_test_callback_callback_with_class1param(WebKitDOMTestCallback* self, WebKitDOMClass1* class1param); - -WEBKIT_API gboolean -webkit_dom_test_callback_callback_with_class2param(WebKitDOMTestCallback* self, WebKitDOMClass2* class2param, const gchar* str_arg); - -WEBKIT_API glong -webkit_dom_test_callback_callback_with_non_bool_return_type(WebKitDOMTestCallback* self, WebKitDOMClass3* class3param); - -G_END_DECLS - -#endif /* WebKitDOMTestCallback_h */ diff --git a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestCallbackPrivate.h b/WebCore/bindings/scripts/test/GObject/WebKitDOMTestCallbackPrivate.h deleted file mode 100644 index 3ad6ff4..0000000 --- a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestCallbackPrivate.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef WEB_KIT_DOM_TEST_CALLBACK_PRIVATE_H -#define WEB_KIT_DOM_TEST_CALLBACK_PRIVATE_H - -#include <glib-object.h> -#include <webkit/WebKitDOMObject.h> -#include "TestCallback.h" -namespace WebKit { - WebKitDOMTestCallback * - wrapTestCallback(WebCore::TestCallback *coreObject); - - WebCore::TestCallback * - core(WebKitDOMTestCallback *request); - - WebKitDOMTestCallback* - kit(WebCore::TestCallback* node); - -} // namespace WebKit - -#endif /* WEB_KIT_DOM_TEST_CALLBACK_PRIVATE_H */ diff --git a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp b/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp deleted file mode 100644 index b68340b..0000000 --- a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp +++ /dev/null @@ -1,150 +0,0 @@ -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include <glib-object.h> -#include "config.h" - -#if ENABLE(Condition1) || ENABLE(Condition2) - -#include <wtf/GetPtr.h> -#include <wtf/RefPtr.h> -#include "DOMObjectCache.h" -#include "ExceptionCode.h" -#include "JSMainThreadExecState.h" -#include "TestInterface.h" -#include "WebKitDOMBinding.h" -#include "gobject/ConvertToUTF8String.h" -#include "webkit/WebKitDOMTestInterface.h" -#include "webkit/WebKitDOMTestInterfacePrivate.h" -#include "webkitmarshal.h" -#include "webkitprivate.h" - -namespace WebKit { - -WebKitDOMTestInterface* kit(WebCore::TestInterface* obj) -{ - g_return_val_if_fail(obj, 0); - - if (gpointer ret = DOMObjectCache::get(obj)) - return static_cast<WebKitDOMTestInterface*>(ret); - - return static_cast<WebKitDOMTestInterface*>(DOMObjectCache::put(obj, WebKit::wrapTestInterface(obj))); -} - -} // namespace WebKit // - - -G_DEFINE_TYPE(WebKitDOMTestInterface, webkit_dom_test_interface, WEBKIT_TYPE_DOM_OBJECT) - -namespace WebKit { - -WebCore::TestInterface* core(WebKitDOMTestInterface* request) -{ - g_return_val_if_fail(request, 0); - - WebCore::TestInterface* coreObject = static_cast<WebCore::TestInterface*>(WEBKIT_DOM_OBJECT(request)->coreObject); - g_return_val_if_fail(coreObject, 0); - - return coreObject; -} - -} // namespace WebKit -enum { - PROP_0, -}; - - -static void webkit_dom_test_interface_finalize(GObject* object) -{ - WebKitDOMObject* dom_object = WEBKIT_DOM_OBJECT(object); - - if (dom_object->coreObject) { - WebCore::TestInterface* coreObject = static_cast<WebCore::TestInterface *>(dom_object->coreObject); - - WebKit::DOMObjectCache::forget(coreObject); - coreObject->deref(); - - dom_object->coreObject = NULL; - } - - G_OBJECT_CLASS(webkit_dom_test_interface_parent_class)->finalize(object); -} - -static void webkit_dom_test_interface_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec) -{ - WebCore::JSMainThreadNullState state; - switch (prop_id) { - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; - } -} - - -static void webkit_dom_test_interface_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec) -{ - WebCore::JSMainThreadNullState state; - switch (prop_id) { - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; - } -} - - -static void webkit_dom_test_interface_constructed(GObject* object) -{ - - if (G_OBJECT_CLASS(webkit_dom_test_interface_parent_class)->constructed) - G_OBJECT_CLASS(webkit_dom_test_interface_parent_class)->constructed(object); -} - -static void webkit_dom_test_interface_class_init(WebKitDOMTestInterfaceClass* requestClass) -{ - GObjectClass *gobjectClass = G_OBJECT_CLASS(requestClass); - gobjectClass->finalize = webkit_dom_test_interface_finalize; - gobjectClass->set_property = webkit_dom_test_interface_set_property; - gobjectClass->get_property = webkit_dom_test_interface_get_property; - gobjectClass->constructed = webkit_dom_test_interface_constructed; - - - -} - -static void webkit_dom_test_interface_init(WebKitDOMTestInterface* request) -{ -} - -namespace WebKit { -WebKitDOMTestInterface* wrapTestInterface(WebCore::TestInterface* coreObject) -{ - g_return_val_if_fail(coreObject, 0); - - /* We call ref() rather than using a C++ smart pointer because we can't store a C++ object - * in a C-allocated GObject structure. See the finalize() code for the - * matching deref(). - */ - coreObject->ref(); - - return WEBKIT_DOM_TEST_INTERFACE(g_object_new(WEBKIT_TYPE_DOM_TEST_INTERFACE, - "core-object", coreObject, NULL)); -} -} // namespace WebKit -#endif /* ENABLE(Condition1) || ENABLE(Condition2) */ diff --git a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.h b/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.h deleted file mode 100644 index f9af866..0000000 --- a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef WebKitDOMTestInterface_h -#define WebKitDOMTestInterface_h - -#include "webkit/webkitdomdefines.h" -#include <glib-object.h> -#include <webkit/webkitdefines.h> -#include "webkit/WebKitDOMObject.h" - - -G_BEGIN_DECLS -#define WEBKIT_TYPE_DOM_TEST_INTERFACE (webkit_dom_test_interface_get_type()) -#define WEBKIT_DOM_TEST_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_DOM_TEST_INTERFACE, WebKitDOMTestInterface)) -#define WEBKIT_DOM_TEST_INTERFACE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_DOM_TEST_INTERFACE, WebKitDOMTestInterfaceClass) -#define WEBKIT_DOM_IS_TEST_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_DOM_TEST_INTERFACE)) -#define WEBKIT_DOM_IS_TEST_INTERFACE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_DOM_TEST_INTERFACE)) -#define WEBKIT_DOM_TEST_INTERFACE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_DOM_TEST_INTERFACE, WebKitDOMTestInterfaceClass)) - -struct _WebKitDOMTestInterface { - WebKitDOMObject parent_instance; -}; - -struct _WebKitDOMTestInterfaceClass { - WebKitDOMObjectClass parent_class; -}; - -WEBKIT_API GType -webkit_dom_test_interface_get_type (void); - -G_END_DECLS - -#endif /* WebKitDOMTestInterface_h */ diff --git a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterfacePrivate.h b/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterfacePrivate.h deleted file mode 100644 index 0a4e3a2..0000000 --- a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterfacePrivate.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef WEB_KIT_DOM_TEST_INTERFACE_PRIVATE_H -#define WEB_KIT_DOM_TEST_INTERFACE_PRIVATE_H - -#include <glib-object.h> -#include <webkit/WebKitDOMObject.h> -#include "TestInterface.h" -namespace WebKit { - WebKitDOMTestInterface * - wrapTestInterface(WebCore::TestInterface *coreObject); - - WebCore::TestInterface * - core(WebKitDOMTestInterface *request); - - WebKitDOMTestInterface* - kit(WebCore::TestInterface* node); - -} // namespace WebKit - -#endif /* WEB_KIT_DOM_TEST_INTERFACE_PRIVATE_H */ diff --git a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestMediaQueryListListener.cpp b/WebCore/bindings/scripts/test/GObject/WebKitDOMTestMediaQueryListListener.cpp deleted file mode 100644 index 93d0bde..0000000 --- a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestMediaQueryListListener.cpp +++ /dev/null @@ -1,147 +0,0 @@ -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include <glib-object.h> -#include "config.h" - -#include <wtf/GetPtr.h> -#include <wtf/RefPtr.h> -#include "DOMObjectCache.h" -#include "ExceptionCode.h" -#include "JSMainThreadExecState.h" -#include "TestMediaQueryListListener.h" -#include "WebKitDOMBinding.h" -#include "gobject/ConvertToUTF8String.h" -#include "webkit/WebKitDOMTestMediaQueryListListener.h" -#include "webkit/WebKitDOMTestMediaQueryListListenerPrivate.h" -#include "webkitmarshal.h" -#include "webkitprivate.h" - -namespace WebKit { - -WebKitDOMTestMediaQueryListListener* kit(WebCore::TestMediaQueryListListener* obj) -{ - g_return_val_if_fail(obj, 0); - - if (gpointer ret = DOMObjectCache::get(obj)) - return static_cast<WebKitDOMTestMediaQueryListListener*>(ret); - - return static_cast<WebKitDOMTestMediaQueryListListener*>(DOMObjectCache::put(obj, WebKit::wrapTestMediaQueryListListener(obj))); -} - -} // namespace WebKit // - - -G_DEFINE_TYPE(WebKitDOMTestMediaQueryListListener, webkit_dom_test_media_query_list_listener, WEBKIT_TYPE_DOM_OBJECT) - -namespace WebKit { - -WebCore::TestMediaQueryListListener* core(WebKitDOMTestMediaQueryListListener* request) -{ - g_return_val_if_fail(request, 0); - - WebCore::TestMediaQueryListListener* coreObject = static_cast<WebCore::TestMediaQueryListListener*>(WEBKIT_DOM_OBJECT(request)->coreObject); - g_return_val_if_fail(coreObject, 0); - - return coreObject; -} - -} // namespace WebKit -enum { - PROP_0, -}; - - -static void webkit_dom_test_media_query_list_listener_finalize(GObject* object) -{ - WebKitDOMObject* dom_object = WEBKIT_DOM_OBJECT(object); - - if (dom_object->coreObject) { - WebCore::TestMediaQueryListListener* coreObject = static_cast<WebCore::TestMediaQueryListListener *>(dom_object->coreObject); - - WebKit::DOMObjectCache::forget(coreObject); - coreObject->deref(); - - dom_object->coreObject = NULL; - } - - G_OBJECT_CLASS(webkit_dom_test_media_query_list_listener_parent_class)->finalize(object); -} - -static void webkit_dom_test_media_query_list_listener_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec) -{ - WebCore::JSMainThreadNullState state; - switch (prop_id) { - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; - } -} - - -static void webkit_dom_test_media_query_list_listener_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec) -{ - WebCore::JSMainThreadNullState state; - switch (prop_id) { - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; - } -} - - -static void webkit_dom_test_media_query_list_listener_constructed(GObject* object) -{ - - if (G_OBJECT_CLASS(webkit_dom_test_media_query_list_listener_parent_class)->constructed) - G_OBJECT_CLASS(webkit_dom_test_media_query_list_listener_parent_class)->constructed(object); -} - -static void webkit_dom_test_media_query_list_listener_class_init(WebKitDOMTestMediaQueryListListenerClass* requestClass) -{ - GObjectClass *gobjectClass = G_OBJECT_CLASS(requestClass); - gobjectClass->finalize = webkit_dom_test_media_query_list_listener_finalize; - gobjectClass->set_property = webkit_dom_test_media_query_list_listener_set_property; - gobjectClass->get_property = webkit_dom_test_media_query_list_listener_get_property; - gobjectClass->constructed = webkit_dom_test_media_query_list_listener_constructed; - - - -} - -static void webkit_dom_test_media_query_list_listener_init(WebKitDOMTestMediaQueryListListener* request) -{ -} - -namespace WebKit { -WebKitDOMTestMediaQueryListListener* wrapTestMediaQueryListListener(WebCore::TestMediaQueryListListener* coreObject) -{ - g_return_val_if_fail(coreObject, 0); - - /* We call ref() rather than using a C++ smart pointer because we can't store a C++ object - * in a C-allocated GObject structure. See the finalize() code for the - * matching deref(). - */ - coreObject->ref(); - - return WEBKIT_DOM_TEST_MEDIA_QUERY_LIST_LISTENER(g_object_new(WEBKIT_TYPE_DOM_TEST_MEDIA_QUERY_LIST_LISTENER, - "core-object", coreObject, NULL)); -} -} // namespace WebKit diff --git a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestMediaQueryListListener.h b/WebCore/bindings/scripts/test/GObject/WebKitDOMTestMediaQueryListListener.h deleted file mode 100644 index 612439b..0000000 --- a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestMediaQueryListListener.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef WebKitDOMTestMediaQueryListListener_h -#define WebKitDOMTestMediaQueryListListener_h - -#include "webkit/webkitdomdefines.h" -#include <glib-object.h> -#include <webkit/webkitdefines.h> -#include "webkit/WebKitDOMObject.h" - - -G_BEGIN_DECLS -#define WEBKIT_TYPE_DOM_TEST_MEDIA_QUERY_LIST_LISTENER (webkit_dom_test_media_query_list_listener_get_type()) -#define WEBKIT_DOM_TEST_MEDIA_QUERY_LIST_LISTENER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_DOM_TEST_MEDIA_QUERY_LIST_LISTENER, WebKitDOMTestMediaQueryListListener)) -#define WEBKIT_DOM_TEST_MEDIA_QUERY_LIST_LISTENER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_DOM_TEST_MEDIA_QUERY_LIST_LISTENER, WebKitDOMTestMediaQueryListListenerClass) -#define WEBKIT_DOM_IS_TEST_MEDIA_QUERY_LIST_LISTENER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_DOM_TEST_MEDIA_QUERY_LIST_LISTENER)) -#define WEBKIT_DOM_IS_TEST_MEDIA_QUERY_LIST_LISTENER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_DOM_TEST_MEDIA_QUERY_LIST_LISTENER)) -#define WEBKIT_DOM_TEST_MEDIA_QUERY_LIST_LISTENER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_DOM_TEST_MEDIA_QUERY_LIST_LISTENER, WebKitDOMTestMediaQueryListListenerClass)) - -struct _WebKitDOMTestMediaQueryListListener { - WebKitDOMObject parent_instance; -}; - -struct _WebKitDOMTestMediaQueryListListenerClass { - WebKitDOMObjectClass parent_class; -}; - -WEBKIT_API GType -webkit_dom_test_media_query_list_listener_get_type (void); - -G_END_DECLS - -#endif /* WebKitDOMTestMediaQueryListListener_h */ diff --git a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestMediaQueryListListenerPrivate.h b/WebCore/bindings/scripts/test/GObject/WebKitDOMTestMediaQueryListListenerPrivate.h deleted file mode 100644 index 5fc652f..0000000 --- a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestMediaQueryListListenerPrivate.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef WEB_KIT_DOM_TEST_MEDIA_QUERY_LIST_LISTENER_PRIVATE_H -#define WEB_KIT_DOM_TEST_MEDIA_QUERY_LIST_LISTENER_PRIVATE_H - -#include <glib-object.h> -#include <webkit/WebKitDOMObject.h> -#include "TestMediaQueryListListener.h" -namespace WebKit { - WebKitDOMTestMediaQueryListListener * - wrapTestMediaQueryListListener(WebCore::TestMediaQueryListListener *coreObject); - - WebCore::TestMediaQueryListListener * - core(WebKitDOMTestMediaQueryListListener *request); - - WebKitDOMTestMediaQueryListListener* - kit(WebCore::TestMediaQueryListListener* node); - -} // namespace WebKit - -#endif /* WEB_KIT_DOM_TEST_MEDIA_QUERY_LIST_LISTENER_PRIVATE_H */ diff --git a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp b/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp deleted file mode 100644 index 6c94d94..0000000 --- a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp +++ /dev/null @@ -1,1812 +0,0 @@ -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include <glib-object.h> -#include "config.h" - -#include <wtf/GetPtr.h> -#include <wtf/RefPtr.h> -#include "DOMObjectCache.h" -#include "ExceptionCode.h" -#include "HTMLNames.h" -#include "JSMainThreadExecState.h" -#include "TestObj.h" -#include "WebKitDOMBinding.h" -#include "gobject/ConvertToUTF8String.h" -#include "webkit/WebKitDOMIDBKey.h" -#include "webkit/WebKitDOMIDBKeyPrivate.h" -#include "webkit/WebKitDOMOptionsObject.h" -#include "webkit/WebKitDOMOptionsObjectPrivate.h" -#include "webkit/WebKitDOMSerializedScriptValue.h" -#include "webkit/WebKitDOMSerializedScriptValuePrivate.h" -#include "webkit/WebKitDOMTestObj.h" -#include "webkit/WebKitDOMTestObjPrivate.h" -#include "webkitmarshal.h" -#include "webkitprivate.h" - -namespace WebKit { - -WebKitDOMTestObj* kit(WebCore::TestObj* obj) -{ - g_return_val_if_fail(obj, 0); - - if (gpointer ret = DOMObjectCache::get(obj)) - return static_cast<WebKitDOMTestObj*>(ret); - - return static_cast<WebKitDOMTestObj*>(DOMObjectCache::put(obj, WebKit::wrapTestObj(obj))); -} - -} // namespace WebKit // - -void -webkit_dom_test_obj_void_method(WebKitDOMTestObj* self) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - item->voidMethod(); -} - -void -webkit_dom_test_obj_void_method_with_args(WebKitDOMTestObj* self, glong int_arg, const gchar* str_arg, WebKitDOMTestObj* obj_arg) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - g_return_if_fail(str_arg); - g_return_if_fail(obj_arg); - WTF::String converted_str_arg = WTF::String::fromUTF8(str_arg); - WebCore::TestObj * converted_obj_arg = NULL; - if (obj_arg != NULL) { - converted_obj_arg = WebKit::core(obj_arg); - g_return_if_fail(converted_obj_arg); - } - item->voidMethodWithArgs(int_arg, converted_str_arg, converted_obj_arg); -} - -glong -webkit_dom_test_obj_int_method(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - glong res = item->intMethod(); - return res; -} - -glong -webkit_dom_test_obj_int_method_with_args(WebKitDOMTestObj* self, glong int_arg, const gchar* str_arg, WebKitDOMTestObj* obj_arg) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - g_return_val_if_fail(str_arg, 0); - g_return_val_if_fail(obj_arg, 0); - WTF::String converted_str_arg = WTF::String::fromUTF8(str_arg); - WebCore::TestObj * converted_obj_arg = NULL; - if (obj_arg != NULL) { - converted_obj_arg = WebKit::core(obj_arg); - g_return_val_if_fail(converted_obj_arg, 0); - } - glong res = item->intMethodWithArgs(int_arg, converted_str_arg, converted_obj_arg); - return res; -} - -WebKitDOMTestObj* -webkit_dom_test_obj_obj_method(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - PassRefPtr<WebCore::TestObj> g_res = WTF::getPtr(item->objMethod()); - WebKitDOMTestObj* res = WebKit::kit(g_res.get()); - return res; -} - -WebKitDOMTestObj* -webkit_dom_test_obj_obj_method_with_args(WebKitDOMTestObj* self, glong int_arg, const gchar* str_arg, WebKitDOMTestObj* obj_arg) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - g_return_val_if_fail(str_arg, 0); - g_return_val_if_fail(obj_arg, 0); - WTF::String converted_str_arg = WTF::String::fromUTF8(str_arg); - WebCore::TestObj * converted_obj_arg = NULL; - if (obj_arg != NULL) { - converted_obj_arg = WebKit::core(obj_arg); - g_return_val_if_fail(converted_obj_arg, 0); - } - PassRefPtr<WebCore::TestObj> g_res = WTF::getPtr(item->objMethodWithArgs(int_arg, converted_str_arg, converted_obj_arg)); - WebKitDOMTestObj* res = WebKit::kit(g_res.get()); - return res; -} - -WebKitDOMTestObj* -webkit_dom_test_obj_method_that_requires_all_args(WebKitDOMTestObj* self, const gchar* str_arg, WebKitDOMTestObj* obj_arg) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - g_return_val_if_fail(str_arg, 0); - g_return_val_if_fail(obj_arg, 0); - WTF::String converted_str_arg = WTF::String::fromUTF8(str_arg); - WebCore::TestObj * converted_obj_arg = NULL; - if (obj_arg != NULL) { - converted_obj_arg = WebKit::core(obj_arg); - g_return_val_if_fail(converted_obj_arg, 0); - } - PassRefPtr<WebCore::TestObj> g_res = WTF::getPtr(item->methodThatRequiresAllArgs(converted_str_arg, converted_obj_arg)); - WebKitDOMTestObj* res = WebKit::kit(g_res.get()); - return res; -} - -WebKitDOMTestObj* -webkit_dom_test_obj_method_that_requires_all_args_and_throws(WebKitDOMTestObj* self, const gchar* str_arg, WebKitDOMTestObj* obj_arg, GError **error) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - g_return_val_if_fail(str_arg, 0); - g_return_val_if_fail(obj_arg, 0); - WTF::String converted_str_arg = WTF::String::fromUTF8(str_arg); - WebCore::TestObj * converted_obj_arg = NULL; - if (obj_arg != NULL) { - converted_obj_arg = WebKit::core(obj_arg); - g_return_val_if_fail(converted_obj_arg, 0); - } - WebCore::ExceptionCode ec = 0; - PassRefPtr<WebCore::TestObj> g_res = WTF::getPtr(item->methodThatRequiresAllArgsAndThrows(converted_str_arg, converted_obj_arg, ec)); - if (ec) { - WebCore::ExceptionCodeDescription ecdesc; - WebCore::getExceptionCodeDescription(ec, ecdesc); - g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), ecdesc.code, ecdesc.name); - } - WebKitDOMTestObj* res = WebKit::kit(g_res.get()); - return res; -} - -void -webkit_dom_test_obj_serialized_value(WebKitDOMTestObj* self, WebKitDOMSerializedScriptValue* serialized_arg) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - g_return_if_fail(serialized_arg); - WebCore::SerializedScriptValue * converted_serialized_arg = NULL; - if (serialized_arg != NULL) { - converted_serialized_arg = WebKit::core(serialized_arg); - g_return_if_fail(converted_serialized_arg); - } - item->serializedValue(converted_serialized_arg); -} - -void -webkit_dom_test_obj_idb_key(WebKitDOMTestObj* self, WebKitDOMIDBKey* key) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - g_return_if_fail(key); - WebCore::IDBKey * converted_key = NULL; - if (key != NULL) { - converted_key = WebKit::core(key); - g_return_if_fail(converted_key); - } - item->idbKey(converted_key); -} - -void -webkit_dom_test_obj_options_object(WebKitDOMTestObj* self, WebKitDOMOptionsObject* oo, WebKitDOMOptionsObject* ooo) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - g_return_if_fail(oo); - g_return_if_fail(ooo); - WebCore::OptionsObject * converted_oo = NULL; - if (oo != NULL) { - converted_oo = WebKit::core(oo); - g_return_if_fail(converted_oo); - } - WebCore::OptionsObject * converted_ooo = NULL; - if (ooo != NULL) { - converted_ooo = WebKit::core(ooo); - g_return_if_fail(converted_ooo); - } - item->optionsObject(converted_oo, converted_ooo); -} - -void -webkit_dom_test_obj_method_with_exception(WebKitDOMTestObj* self, GError **error) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - WebCore::ExceptionCode ec = 0; - item->methodWithException(ec); - if (ec) { - WebCore::ExceptionCodeDescription ecdesc; - WebCore::getExceptionCodeDescription(ec, ecdesc); - g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), ecdesc.code, ecdesc.name); - } -} - - -/* TODO: event function webkit_dom_test_obj_add_event_listener */ - - -/* TODO: event function webkit_dom_test_obj_remove_event_listener */ - -void -webkit_dom_test_obj_with_dynamic_frame(WebKitDOMTestObj* self) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - item->withDynamicFrame(); -} - -void -webkit_dom_test_obj_with_dynamic_frame_and_arg(WebKitDOMTestObj* self, glong int_arg) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - item->withDynamicFrameAndArg(int_arg); -} - -void -webkit_dom_test_obj_with_dynamic_frame_and_optional_arg(WebKitDOMTestObj* self, glong int_arg, glong optional_arg) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - item->withDynamicFrameAndOptionalArg(int_arg, optional_arg); -} - -void -webkit_dom_test_obj_with_dynamic_frame_and_user_gesture(WebKitDOMTestObj* self, glong int_arg, gboolean isUserGesture) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - item->withDynamicFrameAndUserGesture(int_arg, false); -} - -void -webkit_dom_test_obj_with_dynamic_frame_and_user_gesture_asad(WebKitDOMTestObj* self, glong int_arg, glong optional_arg, gboolean isUserGesture) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - item->withDynamicFrameAndUserGestureASAD(int_arg, optional_arg, false); -} - -void -webkit_dom_test_obj_with_script_state_void(WebKitDOMTestObj* self) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - item->withScriptStateVoid(); -} - -WebKitDOMTestObj* -webkit_dom_test_obj_with_script_state_obj(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - PassRefPtr<WebCore::TestObj> g_res = WTF::getPtr(item->withScriptStateObj()); - WebKitDOMTestObj* res = WebKit::kit(g_res.get()); - return res; -} - -void -webkit_dom_test_obj_with_script_state_void_exception(WebKitDOMTestObj* self, GError **error) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - WebCore::ExceptionCode ec = 0; - item->withScriptStateVoidException(ec); - if (ec) { - WebCore::ExceptionCodeDescription ecdesc; - WebCore::getExceptionCodeDescription(ec, ecdesc); - g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), ecdesc.code, ecdesc.name); - } -} - -WebKitDOMTestObj* -webkit_dom_test_obj_with_script_state_obj_exception(WebKitDOMTestObj* self, GError **error) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - WebCore::ExceptionCode ec = 0; - PassRefPtr<WebCore::TestObj> g_res = WTF::getPtr(item->withScriptStateObjException(ec)); - if (ec) { - WebCore::ExceptionCodeDescription ecdesc; - WebCore::getExceptionCodeDescription(ec, ecdesc); - g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), ecdesc.code, ecdesc.name); - } - WebKitDOMTestObj* res = WebKit::kit(g_res.get()); - return res; -} - -void -webkit_dom_test_obj_with_script_execution_context(WebKitDOMTestObj* self) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - item->withScriptExecutionContext(); -} - -void -webkit_dom_test_obj_method_with_optional_arg(WebKitDOMTestObj* self, glong opt) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - item->methodWithOptionalArg(opt); -} - -void -webkit_dom_test_obj_method_with_non_optional_arg_and_optional_arg(WebKitDOMTestObj* self, glong non_opt, glong opt) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - item->methodWithNonOptionalArgAndOptionalArg(non_opt, opt); -} - -void -webkit_dom_test_obj_method_with_non_optional_arg_and_two_optional_args(WebKitDOMTestObj* self, glong non_opt, glong opt1, glong opt2) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - item->methodWithNonOptionalArgAndTwoOptionalArgs(non_opt, opt1, opt2); -} - -void -webkit_dom_test_obj_class_method(WebKitDOMTestObj* self) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - item->classMethod(); -} - -glong -webkit_dom_test_obj_class_method_with_optional(WebKitDOMTestObj* self, glong arg) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - glong res = item->classMethodWithOptional(arg); - return res; -} - -glong -webkit_dom_test_obj_get_read_only_int_attr(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - glong res = item->readOnlyIntAttr(); - return res; -} - -gchar* -webkit_dom_test_obj_get_read_only_string_attr(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - gchar* res = convertToUTF8String(item->readOnlyStringAttr()); - return res; -} - -WebKitDOMTestObj* -webkit_dom_test_obj_get_read_only_test_obj_attr(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - PassRefPtr<WebCore::TestObj> g_res = WTF::getPtr(item->readOnlyTestObjAttr()); - WebKitDOMTestObj* res = WebKit::kit(g_res.get()); - return res; -} - -gshort -webkit_dom_test_obj_get_short_attr(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - gshort res = item->shortAttr(); - return res; -} - -void -webkit_dom_test_obj_set_short_attr(WebKitDOMTestObj* self, gshort value) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - item->setShortAttr(value); -} - -gushort -webkit_dom_test_obj_get_unsigned_short_attr(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - gushort res = item->unsignedShortAttr(); - return res; -} - -void -webkit_dom_test_obj_set_unsigned_short_attr(WebKitDOMTestObj* self, gushort value) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - item->setUnsignedShortAttr(value); -} - -glong -webkit_dom_test_obj_get_int_attr(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - glong res = item->intAttr(); - return res; -} - -void -webkit_dom_test_obj_set_int_attr(WebKitDOMTestObj* self, glong value) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - item->setIntAttr(value); -} - -gint64 -webkit_dom_test_obj_get_long_long_attr(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - gint64 res = item->longLongAttr(); - return res; -} - -void -webkit_dom_test_obj_set_long_long_attr(WebKitDOMTestObj* self, gint64 value) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - item->setLongLongAttr(value); -} - -guint64 -webkit_dom_test_obj_get_unsigned_long_long_attr(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - guint64 res = item->unsignedLongLongAttr(); - return res; -} - -void -webkit_dom_test_obj_set_unsigned_long_long_attr(WebKitDOMTestObj* self, guint64 value) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - item->setUnsignedLongLongAttr(value); -} - -gchar* -webkit_dom_test_obj_get_string_attr(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - gchar* res = convertToUTF8String(item->stringAttr()); - return res; -} - -void -webkit_dom_test_obj_set_string_attr(WebKitDOMTestObj* self, const gchar* value) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - g_return_if_fail(value); - WTF::String converted_value = WTF::String::fromUTF8(value); - item->setStringAttr(converted_value); -} - -WebKitDOMTestObj* -webkit_dom_test_obj_get_test_obj_attr(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - PassRefPtr<WebCore::TestObj> g_res = WTF::getPtr(item->testObjAttr()); - WebKitDOMTestObj* res = WebKit::kit(g_res.get()); - return res; -} - -void -webkit_dom_test_obj_set_test_obj_attr(WebKitDOMTestObj* self, WebKitDOMTestObj* value) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - g_return_if_fail(value); - WebCore::TestObj * converted_value = NULL; - if (value != NULL) { - converted_value = WebKit::core(value); - g_return_if_fail(converted_value); - } - item->setTestObjAttr(converted_value); -} - -WebKitDOMTestObj* -webkit_dom_test_obj_get_xml_obj_attr(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - PassRefPtr<WebCore::TestObj> g_res = WTF::getPtr(item->xmlObjAttr()); - WebKitDOMTestObj* res = WebKit::kit(g_res.get()); - return res; -} - -void -webkit_dom_test_obj_set_xml_obj_attr(WebKitDOMTestObj* self, WebKitDOMTestObj* value) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - g_return_if_fail(value); - WebCore::TestObj * converted_value = NULL; - if (value != NULL) { - converted_value = WebKit::core(value); - g_return_if_fail(converted_value); - } - item->setXMLObjAttr(converted_value); -} - -gboolean -webkit_dom_test_obj_get_create(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - gboolean res = item->isCreate(); - return res; -} - -void -webkit_dom_test_obj_set_create(WebKitDOMTestObj* self, gboolean value) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - item->setCreate(value); -} - -gchar* -webkit_dom_test_obj_get_reflected_string_attr(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - gchar* res = convertToUTF8String(item->getAttribute(WebCore::HTMLNames::reflectedstringattrAttr)); - return res; -} - -void -webkit_dom_test_obj_set_reflected_string_attr(WebKitDOMTestObj* self, const gchar* value) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - g_return_if_fail(value); - WTF::String converted_value = WTF::String::fromUTF8(value); - item->setAttribute(WebCore::HTMLNames::reflectedstringattrAttr, converted_value); -} - -glong -webkit_dom_test_obj_get_reflected_integral_attr(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - glong res = item->getIntegralAttribute(WebCore::HTMLNames::reflectedintegralattrAttr); - return res; -} - -void -webkit_dom_test_obj_set_reflected_integral_attr(WebKitDOMTestObj* self, glong value) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - item->setIntegralAttribute(WebCore::HTMLNames::reflectedintegralattrAttr, value); -} - -gulong -webkit_dom_test_obj_get_reflected_unsigned_integral_attr(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - gulong res = item->getUnsignedIntegralAttribute(WebCore::HTMLNames::reflectedunsignedintegralattrAttr); - return res; -} - -void -webkit_dom_test_obj_set_reflected_unsigned_integral_attr(WebKitDOMTestObj* self, gulong value) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - item->setUnsignedIntegralAttribute(WebCore::HTMLNames::reflectedunsignedintegralattrAttr, value); -} - -gboolean -webkit_dom_test_obj_get_reflected_boolean_attr(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - gboolean res = item->hasAttribute(WebCore::HTMLNames::reflectedbooleanattrAttr); - return res; -} - -void -webkit_dom_test_obj_set_reflected_boolean_attr(WebKitDOMTestObj* self, gboolean value) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - item->setBooleanAttribute(WebCore::HTMLNames::reflectedbooleanattrAttr, value); -} - -gchar* -webkit_dom_test_obj_get_reflected_url_attr(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - gchar* res = convertToUTF8String(item->getURLAttribute(WebCore::HTMLNames::reflectedurlattrAttr)); - return res; -} - -void -webkit_dom_test_obj_set_reflected_url_attr(WebKitDOMTestObj* self, const gchar* value) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - g_return_if_fail(value); - WTF::String converted_value = WTF::String::fromUTF8(value); - item->setAttribute(WebCore::HTMLNames::reflectedurlattrAttr, converted_value); -} - -gchar* -webkit_dom_test_obj_get_reflected_non_empty_url_attr(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - gchar* res = convertToUTF8String(item->getNonEmptyURLAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr)); - return res; -} - -void -webkit_dom_test_obj_set_reflected_non_empty_url_attr(WebKitDOMTestObj* self, const gchar* value) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - g_return_if_fail(value); - WTF::String converted_value = WTF::String::fromUTF8(value); - item->setAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr, converted_value); -} - -gchar* -webkit_dom_test_obj_get_reflected_string_attr(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - gchar* res = convertToUTF8String(item->getAttribute(WebCore::HTMLNames::customContentStringAttrAttr)); - return res; -} - -void -webkit_dom_test_obj_set_reflected_string_attr(WebKitDOMTestObj* self, const gchar* value) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - g_return_if_fail(value); - WTF::String converted_value = WTF::String::fromUTF8(value); - item->setAttribute(WebCore::HTMLNames::customContentStringAttrAttr, converted_value); -} - -glong -webkit_dom_test_obj_get_reflected_custom_integral_attr(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - glong res = item->getIntegralAttribute(WebCore::HTMLNames::customContentIntegralAttrAttr); - return res; -} - -void -webkit_dom_test_obj_set_reflected_custom_integral_attr(WebKitDOMTestObj* self, glong value) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - item->setIntegralAttribute(WebCore::HTMLNames::customContentIntegralAttrAttr, value); -} - -gboolean -webkit_dom_test_obj_get_reflected_custom_boolean_attr(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - gboolean res = item->hasAttribute(WebCore::HTMLNames::customContentBooleanAttrAttr); - return res; -} - -void -webkit_dom_test_obj_set_reflected_custom_boolean_attr(WebKitDOMTestObj* self, gboolean value) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - item->setBooleanAttribute(WebCore::HTMLNames::customContentBooleanAttrAttr, value); -} - -gchar* -webkit_dom_test_obj_get_reflected_custom_url_attr(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - gchar* res = convertToUTF8String(item->getURLAttribute(WebCore::HTMLNames::customContentURLAttrAttr)); - return res; -} - -void -webkit_dom_test_obj_set_reflected_custom_url_attr(WebKitDOMTestObj* self, const gchar* value) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - g_return_if_fail(value); - WTF::String converted_value = WTF::String::fromUTF8(value); - item->setAttribute(WebCore::HTMLNames::customContentURLAttrAttr, converted_value); -} - -gchar* -webkit_dom_test_obj_get_reflected_custom_non_empty_url_attr(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - gchar* res = convertToUTF8String(item->getNonEmptyURLAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr)); - return res; -} - -void -webkit_dom_test_obj_set_reflected_custom_non_empty_url_attr(WebKitDOMTestObj* self, const gchar* value) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - g_return_if_fail(value); - WTF::String converted_value = WTF::String::fromUTF8(value); - item->setAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr, converted_value); -} - -glong -webkit_dom_test_obj_get_attr_with_getter_exception(WebKitDOMTestObj* self, GError **error) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - WebCore::ExceptionCode ec = 0; - glong res = item->attrWithGetterException(ec); - if (ec) { - WebCore::ExceptionCodeDescription ecdesc; - WebCore::getExceptionCodeDescription(ec, ecdesc); - g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), ecdesc.code, ecdesc.name); - } - return res; -} - -void -webkit_dom_test_obj_set_attr_with_getter_exception(WebKitDOMTestObj* self, glong value, GError **error) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - WebCore::ExceptionCode ec = 0; - item->setAttrWithGetterException(value, ec); - if (ec) { - WebCore::ExceptionCodeDescription ecdesc; - WebCore::getExceptionCodeDescription(ec, ecdesc); - g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), ecdesc.code, ecdesc.name); - } -} - -glong -webkit_dom_test_obj_get_attr_with_setter_exception(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - glong res = item->attrWithSetterException(); - return res; -} - -void -webkit_dom_test_obj_set_attr_with_setter_exception(WebKitDOMTestObj* self, glong value, GError **error) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - WebCore::ExceptionCode ec = 0; - item->setAttrWithSetterException(value, ec); - if (ec) { - WebCore::ExceptionCodeDescription ecdesc; - WebCore::getExceptionCodeDescription(ec, ecdesc); - g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), ecdesc.code, ecdesc.name); - } -} - -gchar* -webkit_dom_test_obj_get_string_attr_with_getter_exception(WebKitDOMTestObj* self, GError **error) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - WebCore::ExceptionCode ec = 0; - gchar* res = convertToUTF8String(item->stringAttrWithGetterException(ec)); - return res; -} - -void -webkit_dom_test_obj_set_string_attr_with_getter_exception(WebKitDOMTestObj* self, const gchar* value, GError **error) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - g_return_if_fail(value); - WTF::String converted_value = WTF::String::fromUTF8(value); - WebCore::ExceptionCode ec = 0; - item->setStringAttrWithGetterException(converted_value, ec); - if (ec) { - WebCore::ExceptionCodeDescription ecdesc; - WebCore::getExceptionCodeDescription(ec, ecdesc); - g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), ecdesc.code, ecdesc.name); - } -} - -gchar* -webkit_dom_test_obj_get_string_attr_with_setter_exception(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - gchar* res = convertToUTF8String(item->stringAttrWithSetterException()); - return res; -} - -void -webkit_dom_test_obj_set_string_attr_with_setter_exception(WebKitDOMTestObj* self, const gchar* value, GError **error) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - g_return_if_fail(value); - WTF::String converted_value = WTF::String::fromUTF8(value); - WebCore::ExceptionCode ec = 0; - item->setStringAttrWithSetterException(converted_value, ec); - if (ec) { - WebCore::ExceptionCodeDescription ecdesc; - WebCore::getExceptionCodeDescription(ec, ecdesc); - g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), ecdesc.code, ecdesc.name); - } -} - -gchar* -webkit_dom_test_obj_get_script_string_attr(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - gchar* res = convertToUTF8String(item->scriptStringAttr()); - return res; -} - -glong -webkit_dom_test_obj_get_conditional_attr1(WebKitDOMTestObj* self) -{ -#if ENABLE(Condition1) - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - glong res = item->conditionalAttr1(); - return res; -#else - return static_cast<glong>(0); -#endif /* ENABLE(Condition1) */ -} - -void -webkit_dom_test_obj_set_conditional_attr1(WebKitDOMTestObj* self, glong value) -{ -#if ENABLE(Condition1) - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - item->setConditionalAttr1(value); -#endif /* ENABLE(Condition1) */ -} - -glong -webkit_dom_test_obj_get_conditional_attr2(WebKitDOMTestObj* self) -{ -#if ENABLE(Condition1) && ENABLE(Condition2) - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - glong res = item->conditionalAttr2(); - return res; -#else - return static_cast<glong>(0); -#endif /* ENABLE(Condition1) && ENABLE(Condition2) */ -} - -void -webkit_dom_test_obj_set_conditional_attr2(WebKitDOMTestObj* self, glong value) -{ -#if ENABLE(Condition1) && ENABLE(Condition2) - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - item->setConditionalAttr2(value); -#endif /* ENABLE(Condition1) && ENABLE(Condition2) */ -} - -glong -webkit_dom_test_obj_get_conditional_attr3(WebKitDOMTestObj* self) -{ -#if ENABLE(Condition1) || ENABLE(Condition2) - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - glong res = item->conditionalAttr3(); - return res; -#else - return static_cast<glong>(0); -#endif /* ENABLE(Condition1) || ENABLE(Condition2) */ -} - -void -webkit_dom_test_obj_set_conditional_attr3(WebKitDOMTestObj* self, glong value) -{ -#if ENABLE(Condition1) || ENABLE(Condition2) - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - item->setConditionalAttr3(value); -#endif /* ENABLE(Condition1) || ENABLE(Condition2) */ -} - -glong -webkit_dom_test_obj_get_description(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - glong res = item->description(); - return res; -} - -glong -webkit_dom_test_obj_get_id(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - glong res = item->id(); - return res; -} - -void -webkit_dom_test_obj_set_id(WebKitDOMTestObj* self, glong value) -{ - g_return_if_fail(self); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - item->setId(value); -} - -gchar* -webkit_dom_test_obj_get_hash(WebKitDOMTestObj* self) -{ - g_return_val_if_fail(self, 0); - WebCore::JSMainThreadNullState state; - WebCore::TestObj * item = WebKit::core(self); - gchar* res = convertToUTF8String(item->hash()); - return res; -} - - -G_DEFINE_TYPE(WebKitDOMTestObj, webkit_dom_test_obj, WEBKIT_TYPE_DOM_OBJECT) - -namespace WebKit { - -WebCore::TestObj* core(WebKitDOMTestObj* request) -{ - g_return_val_if_fail(request, 0); - - WebCore::TestObj* coreObject = static_cast<WebCore::TestObj*>(WEBKIT_DOM_OBJECT(request)->coreObject); - g_return_val_if_fail(coreObject, 0); - - return coreObject; -} - -} // namespace WebKit -enum { - PROP_0, - PROP_READ_ONLY_INT_ATTR, - PROP_READ_ONLY_STRING_ATTR, - PROP_READ_ONLY_TEST_OBJ_ATTR, - PROP_SHORT_ATTR, - PROP_UNSIGNED_SHORT_ATTR, - PROP_INT_ATTR, - PROP_LONG_LONG_ATTR, - PROP_UNSIGNED_LONG_LONG_ATTR, - PROP_STRING_ATTR, - PROP_TEST_OBJ_ATTR, - PROP_XML_OBJ_ATTR, - PROP_CREATE, - PROP_REFLECTED_STRING_ATTR, - PROP_REFLECTED_INTEGRAL_ATTR, - PROP_REFLECTED_UNSIGNED_INTEGRAL_ATTR, - PROP_REFLECTED_BOOLEAN_ATTR, - PROP_REFLECTED_URL_ATTR, - PROP_REFLECTED_NON_EMPTY_URL_ATTR, - PROP_REFLECTED_STRING_ATTR, - PROP_REFLECTED_CUSTOM_INTEGRAL_ATTR, - PROP_REFLECTED_CUSTOM_BOOLEAN_ATTR, - PROP_REFLECTED_CUSTOM_URL_ATTR, - PROP_REFLECTED_CUSTOM_NON_EMPTY_URL_ATTR, - PROP_ATTR_WITH_GETTER_EXCEPTION, - PROP_ATTR_WITH_SETTER_EXCEPTION, - PROP_STRING_ATTR_WITH_GETTER_EXCEPTION, - PROP_STRING_ATTR_WITH_SETTER_EXCEPTION, - PROP_CUSTOM_ATTR, - PROP_SCRIPT_STRING_ATTR, -#if ENABLE(Condition1) - PROP_CONDITIONAL_ATTR1, -#endif /* ENABLE(Condition1) */ -#if ENABLE(Condition1) && ENABLE(Condition2) - PROP_CONDITIONAL_ATTR2, -#endif /* ENABLE(Condition1) && ENABLE(Condition2) */ -#if ENABLE(Condition1) || ENABLE(Condition2) - PROP_CONDITIONAL_ATTR3, -#endif /* ENABLE(Condition1) || ENABLE(Condition2) */ - PROP_DESCRIPTION, - PROP_ID, - PROP_HASH, -}; - - -static void webkit_dom_test_obj_finalize(GObject* object) -{ - WebKitDOMObject* dom_object = WEBKIT_DOM_OBJECT(object); - - if (dom_object->coreObject) { - WebCore::TestObj* coreObject = static_cast<WebCore::TestObj *>(dom_object->coreObject); - - WebKit::DOMObjectCache::forget(coreObject); - coreObject->deref(); - - dom_object->coreObject = NULL; - } - - G_OBJECT_CLASS(webkit_dom_test_obj_parent_class)->finalize(object); -} - -static void webkit_dom_test_obj_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec) -{ - WebCore::JSMainThreadNullState state; - WebKitDOMTestObj* self = WEBKIT_DOM_TEST_OBJ(object); - WebCore::TestObj* coreSelf = WebKit::core(self); - switch (prop_id) { - case PROP_UNSIGNED_SHORT_ATTR: - { - coreSelf->setUnsignedShortAttr((g_value_get_ushort(value))); - break; - } - case PROP_INT_ATTR: - { - coreSelf->setIntAttr((g_value_get_long(value))); - break; - } - case PROP_UNSIGNED_LONG_LONG_ATTR: - { - coreSelf->setUnsignedLongLongAttr((g_value_get_uint64(value))); - break; - } - case PROP_STRING_ATTR: - { - coreSelf->setStringAttr(WTF::String::fromUTF8(g_value_get_string(value))); - break; - } - case PROP_CREATE: - { - coreSelf->setCreate((g_value_get_boolean(value))); - break; - } - case PROP_REFLECTED_STRING_ATTR: - { - coreSelf->setAttribute(WebCore::HTMLNames::reflectedstringattrAttr, WTF::String::fromUTF8(g_value_get_string(value))); - break; - } - case PROP_REFLECTED_INTEGRAL_ATTR: - { - coreSelf->setIntegralAttribute(WebCore::HTMLNames::reflectedintegralattrAttr, (g_value_get_long(value))); - break; - } - case PROP_REFLECTED_UNSIGNED_INTEGRAL_ATTR: - { - coreSelf->setUnsignedIntegralAttribute(WebCore::HTMLNames::reflectedunsignedintegralattrAttr, (g_value_get_ulong(value))); - break; - } - case PROP_REFLECTED_BOOLEAN_ATTR: - { - coreSelf->setBooleanAttribute(WebCore::HTMLNames::reflectedbooleanattrAttr, (g_value_get_boolean(value))); - break; - } - case PROP_REFLECTED_URL_ATTR: - { - coreSelf->setAttribute(WebCore::HTMLNames::reflectedurlattrAttr, WTF::String::fromUTF8(g_value_get_string(value))); - break; - } - case PROP_REFLECTED_NON_EMPTY_URL_ATTR: - { - coreSelf->setAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr, WTF::String::fromUTF8(g_value_get_string(value))); - break; - } - case PROP_REFLECTED_STRING_ATTR: - { - coreSelf->setAttribute(WebCore::HTMLNames::customContentStringAttrAttr, WTF::String::fromUTF8(g_value_get_string(value))); - break; - } - case PROP_REFLECTED_CUSTOM_INTEGRAL_ATTR: - { - coreSelf->setIntegralAttribute(WebCore::HTMLNames::customContentIntegralAttrAttr, (g_value_get_long(value))); - break; - } - case PROP_REFLECTED_CUSTOM_BOOLEAN_ATTR: - { - coreSelf->setBooleanAttribute(WebCore::HTMLNames::customContentBooleanAttrAttr, (g_value_get_boolean(value))); - break; - } - case PROP_REFLECTED_CUSTOM_URL_ATTR: - { - coreSelf->setAttribute(WebCore::HTMLNames::customContentURLAttrAttr, WTF::String::fromUTF8(g_value_get_string(value))); - break; - } - case PROP_REFLECTED_CUSTOM_NON_EMPTY_URL_ATTR: - { - coreSelf->setAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr, WTF::String::fromUTF8(g_value_get_string(value))); - break; - } - case PROP_ATTR_WITH_GETTER_EXCEPTION: - { - WebCore::ExceptionCode ec = 0; - coreSelf->setAttrWithGetterException((g_value_get_long(value)), ec); - break; - } - case PROP_ATTR_WITH_SETTER_EXCEPTION: - { - WebCore::ExceptionCode ec = 0; - coreSelf->setAttrWithSetterException((g_value_get_long(value)), ec); - break; - } - case PROP_STRING_ATTR_WITH_GETTER_EXCEPTION: - { - WebCore::ExceptionCode ec = 0; - coreSelf->setStringAttrWithGetterException(WTF::String::fromUTF8(g_value_get_string(value)), ec); - break; - } - case PROP_STRING_ATTR_WITH_SETTER_EXCEPTION: - { - WebCore::ExceptionCode ec = 0; - coreSelf->setStringAttrWithSetterException(WTF::String::fromUTF8(g_value_get_string(value)), ec); - break; - } -#if ENABLE(Condition1) - case PROP_CONDITIONAL_ATTR1: - { - coreSelf->setConditionalAttr1((g_value_get_long(value))); - break; - } -#endif /* ENABLE(Condition1) */ -#if ENABLE(Condition1) && ENABLE(Condition2) - case PROP_CONDITIONAL_ATTR2: - { - coreSelf->setConditionalAttr2((g_value_get_long(value))); - break; - } -#endif /* ENABLE(Condition1) && ENABLE(Condition2) */ -#if ENABLE(Condition1) || ENABLE(Condition2) - case PROP_CONDITIONAL_ATTR3: - { - coreSelf->setConditionalAttr3((g_value_get_long(value))); - break; - } -#endif /* ENABLE(Condition1) || ENABLE(Condition2) */ - case PROP_ID: - { - coreSelf->setId((g_value_get_long(value))); - break; - } - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; - } -} - - -static void webkit_dom_test_obj_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec) -{ - WebCore::JSMainThreadNullState state; - WebKitDOMTestObj* self = WEBKIT_DOM_TEST_OBJ(object); - WebCore::TestObj* coreSelf = WebKit::core(self); - switch (prop_id) { - case PROP_READ_ONLY_INT_ATTR: - { - g_value_set_long(value, coreSelf->readOnlyIntAttr()); - break; - } - case PROP_READ_ONLY_STRING_ATTR: - { - g_value_take_string(value, convertToUTF8String(coreSelf->readOnlyStringAttr())); - break; - } - case PROP_READ_ONLY_TEST_OBJ_ATTR: - { - RefPtr<WebCore::TestObj> ptr = coreSelf->readOnlyTestObjAttr(); - g_value_set_object(value, WebKit::kit(ptr.get())); - break; - } - case PROP_SHORT_ATTR: - { - g_value_set_int(value, coreSelf->shortAttr()); - break; - } - case PROP_UNSIGNED_SHORT_ATTR: - { - g_value_set_uint(value, coreSelf->unsignedShortAttr()); - break; - } - case PROP_INT_ATTR: - { - g_value_set_long(value, coreSelf->intAttr()); - break; - } - case PROP_LONG_LONG_ATTR: - { - g_value_set_int64(value, coreSelf->longLongAttr()); - break; - } - case PROP_UNSIGNED_LONG_LONG_ATTR: - { - g_value_set_uint64(value, coreSelf->unsignedLongLongAttr()); - break; - } - case PROP_STRING_ATTR: - { - g_value_take_string(value, convertToUTF8String(coreSelf->stringAttr())); - break; - } - case PROP_TEST_OBJ_ATTR: - { - RefPtr<WebCore::TestObj> ptr = coreSelf->testObjAttr(); - g_value_set_object(value, WebKit::kit(ptr.get())); - break; - } - case PROP_XML_OBJ_ATTR: - { - RefPtr<WebCore::TestObj> ptr = coreSelf->xmlObjAttr(); - g_value_set_object(value, WebKit::kit(ptr.get())); - break; - } - case PROP_CREATE: - { - g_value_set_boolean(value, coreSelf->isCreate()); - break; - } - case PROP_REFLECTED_STRING_ATTR: - { - g_value_take_string(value, convertToUTF8String(coreSelf->getAttribute(WebCore::HTMLNames::reflectedstringattrAttr))); - break; - } - case PROP_REFLECTED_INTEGRAL_ATTR: - { - g_value_set_long(value, coreSelf->getIntegralAttribute(WebCore::HTMLNames::reflectedintegralattrAttr)); - break; - } - case PROP_REFLECTED_UNSIGNED_INTEGRAL_ATTR: - { - g_value_set_ulong(value, coreSelf->getUnsignedIntegralAttribute(WebCore::HTMLNames::reflectedunsignedintegralattrAttr)); - break; - } - case PROP_REFLECTED_BOOLEAN_ATTR: - { - g_value_set_boolean(value, coreSelf->hasAttribute(WebCore::HTMLNames::reflectedbooleanattrAttr)); - break; - } - case PROP_REFLECTED_URL_ATTR: - { - g_value_take_string(value, convertToUTF8String(coreSelf->getURLAttribute(WebCore::HTMLNames::reflectedurlattrAttr))); - break; - } - case PROP_REFLECTED_NON_EMPTY_URL_ATTR: - { - g_value_take_string(value, convertToUTF8String(coreSelf->getNonEmptyURLAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr))); - break; - } - case PROP_REFLECTED_STRING_ATTR: - { - g_value_take_string(value, convertToUTF8String(coreSelf->getAttribute(WebCore::HTMLNames::customContentStringAttrAttr))); - break; - } - case PROP_REFLECTED_CUSTOM_INTEGRAL_ATTR: - { - g_value_set_long(value, coreSelf->getIntegralAttribute(WebCore::HTMLNames::customContentIntegralAttrAttr)); - break; - } - case PROP_REFLECTED_CUSTOM_BOOLEAN_ATTR: - { - g_value_set_boolean(value, coreSelf->hasAttribute(WebCore::HTMLNames::customContentBooleanAttrAttr)); - break; - } - case PROP_REFLECTED_CUSTOM_URL_ATTR: - { - g_value_take_string(value, convertToUTF8String(coreSelf->getURLAttribute(WebCore::HTMLNames::customContentURLAttrAttr))); - break; - } - case PROP_REFLECTED_CUSTOM_NON_EMPTY_URL_ATTR: - { - g_value_take_string(value, convertToUTF8String(coreSelf->getNonEmptyURLAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr))); - break; - } - case PROP_ATTR_WITH_GETTER_EXCEPTION: - { - WebCore::ExceptionCode ec = 0; - g_value_set_long(value, coreSelf->attrWithGetterException(ec)); - break; - } - case PROP_ATTR_WITH_SETTER_EXCEPTION: - { - g_value_set_long(value, coreSelf->attrWithSetterException()); - break; - } - case PROP_STRING_ATTR_WITH_GETTER_EXCEPTION: - { - WebCore::ExceptionCode ec = 0; - g_value_take_string(value, convertToUTF8String(coreSelf->stringAttrWithGetterException(ec))); - break; - } - case PROP_STRING_ATTR_WITH_SETTER_EXCEPTION: - { - g_value_take_string(value, convertToUTF8String(coreSelf->stringAttrWithSetterException())); - break; - } - case PROP_SCRIPT_STRING_ATTR: - { - g_value_take_string(value, convertToUTF8String(coreSelf->scriptStringAttr())); - break; - } -#if ENABLE(Condition1) - case PROP_CONDITIONAL_ATTR1: - { - g_value_set_long(value, coreSelf->conditionalAttr1()); - break; - } -#endif /* ENABLE(Condition1) */ -#if ENABLE(Condition1) && ENABLE(Condition2) - case PROP_CONDITIONAL_ATTR2: - { - g_value_set_long(value, coreSelf->conditionalAttr2()); - break; - } -#endif /* ENABLE(Condition1) && ENABLE(Condition2) */ -#if ENABLE(Condition1) || ENABLE(Condition2) - case PROP_CONDITIONAL_ATTR3: - { - g_value_set_long(value, coreSelf->conditionalAttr3()); - break; - } -#endif /* ENABLE(Condition1) || ENABLE(Condition2) */ - case PROP_DESCRIPTION: - { - g_value_set_long(value, coreSelf->description()); - break; - } - case PROP_ID: - { - g_value_set_long(value, coreSelf->id()); - break; - } - case PROP_HASH: - { - g_value_take_string(value, convertToUTF8String(coreSelf->hash())); - break; - } - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; - } -} - - -static void webkit_dom_test_obj_constructed(GObject* object) -{ - - if (G_OBJECT_CLASS(webkit_dom_test_obj_parent_class)->constructed) - G_OBJECT_CLASS(webkit_dom_test_obj_parent_class)->constructed(object); -} - -static void webkit_dom_test_obj_class_init(WebKitDOMTestObjClass* requestClass) -{ - GObjectClass *gobjectClass = G_OBJECT_CLASS(requestClass); - gobjectClass->finalize = webkit_dom_test_obj_finalize; - gobjectClass->set_property = webkit_dom_test_obj_set_property; - gobjectClass->get_property = webkit_dom_test_obj_get_property; - gobjectClass->constructed = webkit_dom_test_obj_constructed; - - g_object_class_install_property(gobjectClass, - PROP_READ_ONLY_INT_ATTR, - g_param_spec_long("read-only-int-attr", /* name */ - "test_obj_read-only-int-attr", /* short description */ - "read-only glong TestObj.read-only-int-attr", /* longer - could do with some extra doc stuff here */ - G_MINLONG, /* min */ -G_MAXLONG, /* max */ -0, /* default */ - WEBKIT_PARAM_READABLE)); - g_object_class_install_property(gobjectClass, - PROP_READ_ONLY_STRING_ATTR, - g_param_spec_string("read-only-string-attr", /* name */ - "test_obj_read-only-string-attr", /* short description */ - "read-only gchar* TestObj.read-only-string-attr", /* longer - could do with some extra doc stuff here */ - "", /* default */ - WEBKIT_PARAM_READABLE)); - g_object_class_install_property(gobjectClass, - PROP_READ_ONLY_TEST_OBJ_ATTR, - g_param_spec_object("read-only-test-obj-attr", /* name */ - "test_obj_read-only-test-obj-attr", /* short description */ - "read-only WebKitDOMTestObj* TestObj.read-only-test-obj-attr", /* longer - could do with some extra doc stuff here */ - WEBKIT_TYPE_DOM_TEST_OBJ, /* gobject type */ - WEBKIT_PARAM_READABLE)); - g_object_class_install_property(gobjectClass, - PROP_SHORT_ATTR, - g_param_spec_int("short-attr", /* name */ - "test_obj_short-attr", /* short description */ - "read-write gshort TestObj.short-attr", /* longer - could do with some extra doc stuff here */ - G_MININT, /* min */ -G_MAXINT, /* max */ -0, /* default */ - WEBKIT_PARAM_READWRITE)); - g_object_class_install_property(gobjectClass, - PROP_UNSIGNED_SHORT_ATTR, - g_param_spec_uint("unsigned-short-attr", /* name */ - "test_obj_unsigned-short-attr", /* short description */ - "read-write gushort TestObj.unsigned-short-attr", /* longer - could do with some extra doc stuff here */ - 0, /* min */ -G_MAXUINT16, /* max */ -0, /* default */ - WEBKIT_PARAM_READWRITE)); - g_object_class_install_property(gobjectClass, - PROP_INT_ATTR, - g_param_spec_long("int-attr", /* name */ - "test_obj_int-attr", /* short description */ - "read-write glong TestObj.int-attr", /* longer - could do with some extra doc stuff here */ - G_MINLONG, /* min */ -G_MAXLONG, /* max */ -0, /* default */ - WEBKIT_PARAM_READWRITE)); - g_object_class_install_property(gobjectClass, - PROP_LONG_LONG_ATTR, - g_param_spec_int64("long-long-attr", /* name */ - "test_obj_long-long-attr", /* short description */ - "read-write gint64 TestObj.long-long-attr", /* longer - could do with some extra doc stuff here */ - G_MININT64, /* min */ -G_MAXINT64, /* max */ -0, /* default */ - WEBKIT_PARAM_READWRITE)); - g_object_class_install_property(gobjectClass, - PROP_UNSIGNED_LONG_LONG_ATTR, - g_param_spec_uint64("unsigned-long-long-attr", /* name */ - "test_obj_unsigned-long-long-attr", /* short description */ - "read-write guint64 TestObj.unsigned-long-long-attr", /* longer - could do with some extra doc stuff here */ - 0, /* min */ -G_MAXUINT64, /* min */ -0, /* default */ - WEBKIT_PARAM_READWRITE)); - g_object_class_install_property(gobjectClass, - PROP_STRING_ATTR, - g_param_spec_string("string-attr", /* name */ - "test_obj_string-attr", /* short description */ - "read-write gchar* TestObj.string-attr", /* longer - could do with some extra doc stuff here */ - "", /* default */ - WEBKIT_PARAM_READWRITE)); - g_object_class_install_property(gobjectClass, - PROP_TEST_OBJ_ATTR, - g_param_spec_object("test-obj-attr", /* name */ - "test_obj_test-obj-attr", /* short description */ - "read-write WebKitDOMTestObj* TestObj.test-obj-attr", /* longer - could do with some extra doc stuff here */ - WEBKIT_TYPE_DOM_TEST_OBJ, /* gobject type */ - WEBKIT_PARAM_READWRITE)); - g_object_class_install_property(gobjectClass, - PROP_XML_OBJ_ATTR, - g_param_spec_object("xml-obj-attr", /* name */ - "test_obj_xml-obj-attr", /* short description */ - "read-write WebKitDOMTestObj* TestObj.xml-obj-attr", /* longer - could do with some extra doc stuff here */ - WEBKIT_TYPE_DOM_TEST_OBJ, /* gobject type */ - WEBKIT_PARAM_READWRITE)); - g_object_class_install_property(gobjectClass, - PROP_CREATE, - g_param_spec_boolean("create", /* name */ - "test_obj_create", /* short description */ - "read-write gboolean TestObj.create", /* longer - could do with some extra doc stuff here */ - FALSE, /* default */ - WEBKIT_PARAM_READWRITE)); - g_object_class_install_property(gobjectClass, - PROP_REFLECTED_STRING_ATTR, - g_param_spec_string("reflected-string-attr", /* name */ - "test_obj_reflected-string-attr", /* short description */ - "read-write gchar* TestObj.reflected-string-attr", /* longer - could do with some extra doc stuff here */ - "", /* default */ - WEBKIT_PARAM_READWRITE)); - g_object_class_install_property(gobjectClass, - PROP_REFLECTED_INTEGRAL_ATTR, - g_param_spec_long("reflected-integral-attr", /* name */ - "test_obj_reflected-integral-attr", /* short description */ - "read-write glong TestObj.reflected-integral-attr", /* longer - could do with some extra doc stuff here */ - G_MINLONG, /* min */ -G_MAXLONG, /* max */ -0, /* default */ - WEBKIT_PARAM_READWRITE)); - g_object_class_install_property(gobjectClass, - PROP_REFLECTED_UNSIGNED_INTEGRAL_ATTR, - g_param_spec_ulong("reflected-unsigned-integral-attr", /* name */ - "test_obj_reflected-unsigned-integral-attr", /* short description */ - "read-write gulong TestObj.reflected-unsigned-integral-attr", /* longer - could do with some extra doc stuff here */ - 0, /* min */ -G_MAXULONG, /* max */ -0, /* default */ - WEBKIT_PARAM_READWRITE)); - g_object_class_install_property(gobjectClass, - PROP_REFLECTED_BOOLEAN_ATTR, - g_param_spec_boolean("reflected-boolean-attr", /* name */ - "test_obj_reflected-boolean-attr", /* short description */ - "read-write gboolean TestObj.reflected-boolean-attr", /* longer - could do with some extra doc stuff here */ - FALSE, /* default */ - WEBKIT_PARAM_READWRITE)); - g_object_class_install_property(gobjectClass, - PROP_REFLECTED_URL_ATTR, - g_param_spec_string("reflected-url-attr", /* name */ - "test_obj_reflected-url-attr", /* short description */ - "read-write gchar* TestObj.reflected-url-attr", /* longer - could do with some extra doc stuff here */ - "", /* default */ - WEBKIT_PARAM_READWRITE)); - g_object_class_install_property(gobjectClass, - PROP_REFLECTED_NON_EMPTY_URL_ATTR, - g_param_spec_string("reflected-non-empty-url-attr", /* name */ - "test_obj_reflected-non-empty-url-attr", /* short description */ - "read-write gchar* TestObj.reflected-non-empty-url-attr", /* longer - could do with some extra doc stuff here */ - "", /* default */ - WEBKIT_PARAM_READWRITE)); - g_object_class_install_property(gobjectClass, - PROP_REFLECTED_STRING_ATTR, - g_param_spec_string("reflected-string-attr", /* name */ - "test_obj_reflected-string-attr", /* short description */ - "read-write gchar* TestObj.reflected-string-attr", /* longer - could do with some extra doc stuff here */ - "", /* default */ - WEBKIT_PARAM_READWRITE)); - g_object_class_install_property(gobjectClass, - PROP_REFLECTED_CUSTOM_INTEGRAL_ATTR, - g_param_spec_long("reflected-custom-integral-attr", /* name */ - "test_obj_reflected-custom-integral-attr", /* short description */ - "read-write glong TestObj.reflected-custom-integral-attr", /* longer - could do with some extra doc stuff here */ - G_MINLONG, /* min */ -G_MAXLONG, /* max */ -0, /* default */ - WEBKIT_PARAM_READWRITE)); - g_object_class_install_property(gobjectClass, - PROP_REFLECTED_CUSTOM_BOOLEAN_ATTR, - g_param_spec_boolean("reflected-custom-boolean-attr", /* name */ - "test_obj_reflected-custom-boolean-attr", /* short description */ - "read-write gboolean TestObj.reflected-custom-boolean-attr", /* longer - could do with some extra doc stuff here */ - FALSE, /* default */ - WEBKIT_PARAM_READWRITE)); - g_object_class_install_property(gobjectClass, - PROP_REFLECTED_CUSTOM_URL_ATTR, - g_param_spec_string("reflected-custom-url-attr", /* name */ - "test_obj_reflected-custom-url-attr", /* short description */ - "read-write gchar* TestObj.reflected-custom-url-attr", /* longer - could do with some extra doc stuff here */ - "", /* default */ - WEBKIT_PARAM_READWRITE)); - g_object_class_install_property(gobjectClass, - PROP_REFLECTED_CUSTOM_NON_EMPTY_URL_ATTR, - g_param_spec_string("reflected-custom-non-empty-url-attr", /* name */ - "test_obj_reflected-custom-non-empty-url-attr", /* short description */ - "read-write gchar* TestObj.reflected-custom-non-empty-url-attr", /* longer - could do with some extra doc stuff here */ - "", /* default */ - WEBKIT_PARAM_READWRITE)); - g_object_class_install_property(gobjectClass, - PROP_ATTR_WITH_GETTER_EXCEPTION, - g_param_spec_long("attr-with-getter-exception", /* name */ - "test_obj_attr-with-getter-exception", /* short description */ - "read-write glong TestObj.attr-with-getter-exception", /* longer - could do with some extra doc stuff here */ - G_MINLONG, /* min */ -G_MAXLONG, /* max */ -0, /* default */ - WEBKIT_PARAM_READWRITE)); - g_object_class_install_property(gobjectClass, - PROP_ATTR_WITH_SETTER_EXCEPTION, - g_param_spec_long("attr-with-setter-exception", /* name */ - "test_obj_attr-with-setter-exception", /* short description */ - "read-write glong TestObj.attr-with-setter-exception", /* longer - could do with some extra doc stuff here */ - G_MINLONG, /* min */ -G_MAXLONG, /* max */ -0, /* default */ - WEBKIT_PARAM_READWRITE)); - g_object_class_install_property(gobjectClass, - PROP_STRING_ATTR_WITH_GETTER_EXCEPTION, - g_param_spec_string("string-attr-with-getter-exception", /* name */ - "test_obj_string-attr-with-getter-exception", /* short description */ - "read-write gchar* TestObj.string-attr-with-getter-exception", /* longer - could do with some extra doc stuff here */ - "", /* default */ - WEBKIT_PARAM_READWRITE)); - g_object_class_install_property(gobjectClass, - PROP_STRING_ATTR_WITH_SETTER_EXCEPTION, - g_param_spec_string("string-attr-with-setter-exception", /* name */ - "test_obj_string-attr-with-setter-exception", /* short description */ - "read-write gchar* TestObj.string-attr-with-setter-exception", /* longer - could do with some extra doc stuff here */ - "", /* default */ - WEBKIT_PARAM_READWRITE)); - g_object_class_install_property(gobjectClass, - PROP_SCRIPT_STRING_ATTR, - g_param_spec_string("script-string-attr", /* name */ - "test_obj_script-string-attr", /* short description */ - "read-only gchar* TestObj.script-string-attr", /* longer - could do with some extra doc stuff here */ - "", /* default */ - WEBKIT_PARAM_READABLE)); -#if ENABLE(Condition1) - g_object_class_install_property(gobjectClass, - PROP_CONDITIONAL_ATTR1, - g_param_spec_long("conditional-attr1", /* name */ - "test_obj_conditional-attr1", /* short description */ - "read-write glong TestObj.conditional-attr1", /* longer - could do with some extra doc stuff here */ - G_MINLONG, /* min */ -G_MAXLONG, /* max */ -0, /* default */ - WEBKIT_PARAM_READWRITE)); -#endif /* ENABLE(Condition1) */ -#if ENABLE(Condition1) && ENABLE(Condition2) - g_object_class_install_property(gobjectClass, - PROP_CONDITIONAL_ATTR2, - g_param_spec_long("conditional-attr2", /* name */ - "test_obj_conditional-attr2", /* short description */ - "read-write glong TestObj.conditional-attr2", /* longer - could do with some extra doc stuff here */ - G_MINLONG, /* min */ -G_MAXLONG, /* max */ -0, /* default */ - WEBKIT_PARAM_READWRITE)); -#endif /* ENABLE(Condition1) && ENABLE(Condition2) */ -#if ENABLE(Condition1) || ENABLE(Condition2) - g_object_class_install_property(gobjectClass, - PROP_CONDITIONAL_ATTR3, - g_param_spec_long("conditional-attr3", /* name */ - "test_obj_conditional-attr3", /* short description */ - "read-write glong TestObj.conditional-attr3", /* longer - could do with some extra doc stuff here */ - G_MINLONG, /* min */ -G_MAXLONG, /* max */ -0, /* default */ - WEBKIT_PARAM_READWRITE)); -#endif /* ENABLE(Condition1) || ENABLE(Condition2) */ - g_object_class_install_property(gobjectClass, - PROP_DESCRIPTION, - g_param_spec_long("description", /* name */ - "test_obj_description", /* short description */ - "read-only glong TestObj.description", /* longer - could do with some extra doc stuff here */ - G_MINLONG, /* min */ -G_MAXLONG, /* max */ -0, /* default */ - WEBKIT_PARAM_READABLE)); - g_object_class_install_property(gobjectClass, - PROP_ID, - g_param_spec_long("id", /* name */ - "test_obj_id", /* short description */ - "read-write glong TestObj.id", /* longer - could do with some extra doc stuff here */ - G_MINLONG, /* min */ -G_MAXLONG, /* max */ -0, /* default */ - WEBKIT_PARAM_READWRITE)); - g_object_class_install_property(gobjectClass, - PROP_HASH, - g_param_spec_string("hash", /* name */ - "test_obj_hash", /* short description */ - "read-only gchar* TestObj.hash", /* longer - could do with some extra doc stuff here */ - "", /* default */ - WEBKIT_PARAM_READABLE)); - - -} - -static void webkit_dom_test_obj_init(WebKitDOMTestObj* request) -{ -} - -namespace WebKit { -WebKitDOMTestObj* wrapTestObj(WebCore::TestObj* coreObject) -{ - g_return_val_if_fail(coreObject, 0); - - /* We call ref() rather than using a C++ smart pointer because we can't store a C++ object - * in a C-allocated GObject structure. See the finalize() code for the - * matching deref(). - */ - coreObject->ref(); - - return WEBKIT_DOM_TEST_OBJ(g_object_new(WEBKIT_TYPE_DOM_TEST_OBJ, - "core-object", coreObject, NULL)); -} -} // namespace WebKit diff --git a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h b/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h deleted file mode 100644 index 0416664..0000000 --- a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h +++ /dev/null @@ -1,324 +0,0 @@ -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef WebKitDOMTestObj_h -#define WebKitDOMTestObj_h - -#include "webkit/webkitdomdefines.h" -#include <glib-object.h> -#include <webkit/webkitdefines.h> -#include "webkit/WebKitDOMObject.h" - - -G_BEGIN_DECLS -#define WEBKIT_TYPE_DOM_TEST_OBJ (webkit_dom_test_obj_get_type()) -#define WEBKIT_DOM_TEST_OBJ(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_DOM_TEST_OBJ, WebKitDOMTestObj)) -#define WEBKIT_DOM_TEST_OBJ_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_DOM_TEST_OBJ, WebKitDOMTestObjClass) -#define WEBKIT_DOM_IS_TEST_OBJ(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_DOM_TEST_OBJ)) -#define WEBKIT_DOM_IS_TEST_OBJ_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_DOM_TEST_OBJ)) -#define WEBKIT_DOM_TEST_OBJ_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_DOM_TEST_OBJ, WebKitDOMTestObjClass)) - -struct _WebKitDOMTestObj { - WebKitDOMObject parent_instance; -}; - -struct _WebKitDOMTestObjClass { - WebKitDOMObjectClass parent_class; -}; - -WEBKIT_API GType -webkit_dom_test_obj_get_type (void); - -WEBKIT_API void -webkit_dom_test_obj_void_method(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_void_method_with_args(WebKitDOMTestObj* self, glong int_arg, const gchar* str_arg, WebKitDOMTestObj* obj_arg); - -WEBKIT_API glong -webkit_dom_test_obj_int_method(WebKitDOMTestObj* self); - -WEBKIT_API glong -webkit_dom_test_obj_int_method_with_args(WebKitDOMTestObj* self, glong int_arg, const gchar* str_arg, WebKitDOMTestObj* obj_arg); - -WEBKIT_API WebKitDOMTestObj* -webkit_dom_test_obj_obj_method(WebKitDOMTestObj* self); - -WEBKIT_API WebKitDOMTestObj* -webkit_dom_test_obj_obj_method_with_args(WebKitDOMTestObj* self, glong int_arg, const gchar* str_arg, WebKitDOMTestObj* obj_arg); - -WEBKIT_API WebKitDOMTestObj* -webkit_dom_test_obj_method_that_requires_all_args(WebKitDOMTestObj* self, const gchar* str_arg, WebKitDOMTestObj* obj_arg); - -WEBKIT_API WebKitDOMTestObj* -webkit_dom_test_obj_method_that_requires_all_args_and_throws(WebKitDOMTestObj* self, const gchar* str_arg, WebKitDOMTestObj* obj_arg, GError **error); - -WEBKIT_API void -webkit_dom_test_obj_serialized_value(WebKitDOMTestObj* self, WebKitDOMSerializedScriptValue* serialized_arg); - -WEBKIT_API void -webkit_dom_test_obj_idb_key(WebKitDOMTestObj* self, WebKitDOMIDBKey* key); - -WEBKIT_API void -webkit_dom_test_obj_options_object(WebKitDOMTestObj* self, WebKitDOMOptionsObject* oo, WebKitDOMOptionsObject* ooo); - -WEBKIT_API void -webkit_dom_test_obj_method_with_exception(WebKitDOMTestObj* self, GError **error); - - -/* TODO: event function webkit_dom_test_obj_add_event_listener */ - - -/* TODO: event function webkit_dom_test_obj_remove_event_listener */ - -WEBKIT_API void -webkit_dom_test_obj_with_dynamic_frame(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_with_dynamic_frame_and_arg(WebKitDOMTestObj* self, glong int_arg); - -WEBKIT_API void -webkit_dom_test_obj_with_dynamic_frame_and_optional_arg(WebKitDOMTestObj* self, glong int_arg, glong optional_arg); - -WEBKIT_API void -webkit_dom_test_obj_with_dynamic_frame_and_user_gesture(WebKitDOMTestObj* self, glong int_arg, gboolean isUserGesture); - -WEBKIT_API void -webkit_dom_test_obj_with_dynamic_frame_and_user_gesture_asad(WebKitDOMTestObj* self, glong int_arg, glong optional_arg, gboolean isUserGesture); - -WEBKIT_API void -webkit_dom_test_obj_with_script_state_void(WebKitDOMTestObj* self); - -WEBKIT_API WebKitDOMTestObj* -webkit_dom_test_obj_with_script_state_obj(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_with_script_state_void_exception(WebKitDOMTestObj* self, GError **error); - -WEBKIT_API WebKitDOMTestObj* -webkit_dom_test_obj_with_script_state_obj_exception(WebKitDOMTestObj* self, GError **error); - -WEBKIT_API void -webkit_dom_test_obj_with_script_execution_context(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_method_with_optional_arg(WebKitDOMTestObj* self, glong opt); - -WEBKIT_API void -webkit_dom_test_obj_method_with_non_optional_arg_and_optional_arg(WebKitDOMTestObj* self, glong non_opt, glong opt); - -WEBKIT_API void -webkit_dom_test_obj_method_with_non_optional_arg_and_two_optional_args(WebKitDOMTestObj* self, glong non_opt, glong opt1, glong opt2); - -WEBKIT_API void -webkit_dom_test_obj_class_method(WebKitDOMTestObj* self); - -WEBKIT_API glong -webkit_dom_test_obj_class_method_with_optional(WebKitDOMTestObj* self, glong arg); - -WEBKIT_API glong -webkit_dom_test_obj_get_read_only_int_attr(WebKitDOMTestObj* self); - -WEBKIT_API gchar* -webkit_dom_test_obj_get_read_only_string_attr(WebKitDOMTestObj* self); - -WEBKIT_API WebKitDOMTestObj* -webkit_dom_test_obj_get_read_only_test_obj_attr(WebKitDOMTestObj* self); - -WEBKIT_API gshort -webkit_dom_test_obj_get_short_attr(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_set_short_attr(WebKitDOMTestObj* self, gshort value); - -WEBKIT_API gushort -webkit_dom_test_obj_get_unsigned_short_attr(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_set_unsigned_short_attr(WebKitDOMTestObj* self, gushort value); - -WEBKIT_API glong -webkit_dom_test_obj_get_int_attr(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_set_int_attr(WebKitDOMTestObj* self, glong value); - -WEBKIT_API gint64 -webkit_dom_test_obj_get_long_long_attr(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_set_long_long_attr(WebKitDOMTestObj* self, gint64 value); - -WEBKIT_API guint64 -webkit_dom_test_obj_get_unsigned_long_long_attr(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_set_unsigned_long_long_attr(WebKitDOMTestObj* self, guint64 value); - -WEBKIT_API gchar* -webkit_dom_test_obj_get_string_attr(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_set_string_attr(WebKitDOMTestObj* self, const gchar* value); - -WEBKIT_API WebKitDOMTestObj* -webkit_dom_test_obj_get_test_obj_attr(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_set_test_obj_attr(WebKitDOMTestObj* self, WebKitDOMTestObj* value); - -WEBKIT_API WebKitDOMTestObj* -webkit_dom_test_obj_get_xml_obj_attr(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_set_xml_obj_attr(WebKitDOMTestObj* self, WebKitDOMTestObj* value); - -WEBKIT_API gboolean -webkit_dom_test_obj_get_create(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_set_create(WebKitDOMTestObj* self, gboolean value); - -WEBKIT_API gchar* -webkit_dom_test_obj_get_reflected_string_attr(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_set_reflected_string_attr(WebKitDOMTestObj* self, const gchar* value); - -WEBKIT_API glong -webkit_dom_test_obj_get_reflected_integral_attr(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_set_reflected_integral_attr(WebKitDOMTestObj* self, glong value); - -WEBKIT_API gulong -webkit_dom_test_obj_get_reflected_unsigned_integral_attr(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_set_reflected_unsigned_integral_attr(WebKitDOMTestObj* self, gulong value); - -WEBKIT_API gboolean -webkit_dom_test_obj_get_reflected_boolean_attr(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_set_reflected_boolean_attr(WebKitDOMTestObj* self, gboolean value); - -WEBKIT_API gchar* -webkit_dom_test_obj_get_reflected_url_attr(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_set_reflected_url_attr(WebKitDOMTestObj* self, const gchar* value); - -WEBKIT_API gchar* -webkit_dom_test_obj_get_reflected_non_empty_url_attr(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_set_reflected_non_empty_url_attr(WebKitDOMTestObj* self, const gchar* value); - -WEBKIT_API gchar* -webkit_dom_test_obj_get_reflected_string_attr(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_set_reflected_string_attr(WebKitDOMTestObj* self, const gchar* value); - -WEBKIT_API glong -webkit_dom_test_obj_get_reflected_custom_integral_attr(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_set_reflected_custom_integral_attr(WebKitDOMTestObj* self, glong value); - -WEBKIT_API gboolean -webkit_dom_test_obj_get_reflected_custom_boolean_attr(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_set_reflected_custom_boolean_attr(WebKitDOMTestObj* self, gboolean value); - -WEBKIT_API gchar* -webkit_dom_test_obj_get_reflected_custom_url_attr(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_set_reflected_custom_url_attr(WebKitDOMTestObj* self, const gchar* value); - -WEBKIT_API gchar* -webkit_dom_test_obj_get_reflected_custom_non_empty_url_attr(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_set_reflected_custom_non_empty_url_attr(WebKitDOMTestObj* self, const gchar* value); - -WEBKIT_API glong -webkit_dom_test_obj_get_attr_with_getter_exception(WebKitDOMTestObj* self, GError **error); - -WEBKIT_API void -webkit_dom_test_obj_set_attr_with_getter_exception(WebKitDOMTestObj* self, glong value, GError **error); - -WEBKIT_API glong -webkit_dom_test_obj_get_attr_with_setter_exception(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_set_attr_with_setter_exception(WebKitDOMTestObj* self, glong value, GError **error); - -WEBKIT_API gchar* -webkit_dom_test_obj_get_string_attr_with_getter_exception(WebKitDOMTestObj* self, GError **error); - -WEBKIT_API void -webkit_dom_test_obj_set_string_attr_with_getter_exception(WebKitDOMTestObj* self, const gchar* value, GError **error); - -WEBKIT_API gchar* -webkit_dom_test_obj_get_string_attr_with_setter_exception(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_set_string_attr_with_setter_exception(WebKitDOMTestObj* self, const gchar* value, GError **error); - -WEBKIT_API gchar* -webkit_dom_test_obj_get_script_string_attr(WebKitDOMTestObj* self); - -WEBKIT_API glong -webkit_dom_test_obj_get_conditional_attr1(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_set_conditional_attr1(WebKitDOMTestObj* self, glong value); - -WEBKIT_API glong -webkit_dom_test_obj_get_conditional_attr2(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_set_conditional_attr2(WebKitDOMTestObj* self, glong value); - -WEBKIT_API glong -webkit_dom_test_obj_get_conditional_attr3(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_set_conditional_attr3(WebKitDOMTestObj* self, glong value); - -WEBKIT_API glong -webkit_dom_test_obj_get_description(WebKitDOMTestObj* self); - -WEBKIT_API glong -webkit_dom_test_obj_get_id(WebKitDOMTestObj* self); - -WEBKIT_API void -webkit_dom_test_obj_set_id(WebKitDOMTestObj* self, glong value); - -WEBKIT_API gchar* -webkit_dom_test_obj_get_hash(WebKitDOMTestObj* self); - -G_END_DECLS - -#endif /* WebKitDOMTestObj_h */ diff --git a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObjPrivate.h b/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObjPrivate.h deleted file mode 100644 index 96722f7..0000000 --- a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObjPrivate.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef WEB_KIT_DOM_TEST_OBJ_PRIVATE_H -#define WEB_KIT_DOM_TEST_OBJ_PRIVATE_H - -#include <glib-object.h> -#include <webkit/WebKitDOMObject.h> -#include "TestObj.h" -namespace WebKit { - WebKitDOMTestObj * - wrapTestObj(WebCore::TestObj *coreObject); - - WebCore::TestObj * - core(WebKitDOMTestObj *request); - - WebKitDOMTestObj* - kit(WebCore::TestObj* node); - -} // namespace WebKit - -#endif /* WEB_KIT_DOM_TEST_OBJ_PRIVATE_H */ diff --git a/WebCore/bindings/scripts/test/JS/JSTestCallback.cpp b/WebCore/bindings/scripts/test/JS/JSTestCallback.cpp deleted file mode 100644 index 069b8ae..0000000 --- a/WebCore/bindings/scripts/test/JS/JSTestCallback.cpp +++ /dev/null @@ -1,98 +0,0 @@ -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include "config.h" - -#if ENABLE(DATABASE) - -#include "JSTestCallback.h" - -#include "JSClass1.h" -#include "JSClass2.h" -#include "ScriptExecutionContext.h" -#include <runtime/JSLock.h> -#include <wtf/MainThread.h> - -using namespace JSC; - -namespace WebCore { - -JSTestCallback::JSTestCallback(JSObject* callback, JSDOMGlobalObject* globalObject) - : ActiveDOMCallback(globalObject->scriptExecutionContext()) - , m_data(new JSCallbackData(callback, globalObject)) -{ -} - -JSTestCallback::~JSTestCallback() -{ - ScriptExecutionContext* context = scriptExecutionContext(); - // When the context is destroyed, all tasks with a reference to a callback - // should be deleted. So if the context is 0, we are on the context thread. - if (!context || context->isContextThread()) - delete m_data; - else - context->postTask(DeleteCallbackDataTask::create(m_data)); -#ifndef NDEBUG - m_data = 0; -#endif -} - -// Functions - -bool JSTestCallback::callbackWithClass1Param(Class1* class1Param) -{ - if (!canInvokeCallback()) - return true; - - RefPtr<JSTestCallback> protect(this); - - JSLock lock(SilenceAssertionsOnly); - - ExecState* exec = m_data->globalObject()->globalExec(); - MarkedArgumentBuffer args; - args.append(toJS(exec, class1Param)); - - bool raisedException = false; - m_data->invokeCallback(args, &raisedException); - return !raisedException; -} - -bool JSTestCallback::callbackWithClass2Param(Class2* class2Param, const String& strArg) -{ - if (!canInvokeCallback()) - return true; - - RefPtr<JSTestCallback> protect(this); - - JSLock lock(SilenceAssertionsOnly); - - ExecState* exec = m_data->globalObject()->globalExec(); - MarkedArgumentBuffer args; - args.append(toJS(exec, class2Param)); - args.append(jsString(exec, strArg)); - - bool raisedException = false; - m_data->invokeCallback(args, &raisedException); - return !raisedException; -} - -} - -#endif // ENABLE(DATABASE) diff --git a/WebCore/bindings/scripts/test/JS/JSTestCallback.h b/WebCore/bindings/scripts/test/JS/JSTestCallback.h deleted file mode 100644 index ae91a6c..0000000 --- a/WebCore/bindings/scripts/test/JS/JSTestCallback.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef JSTestCallback_h -#define JSTestCallback_h - -#if ENABLE(DATABASE) - -#include "ActiveDOMCallback.h" -#include "JSCallbackData.h" -#include "TestCallback.h" -#include <wtf/Forward.h> - -namespace WebCore { - -class JSTestCallback : public TestCallback, public ActiveDOMCallback { -public: - static PassRefPtr<JSTestCallback> create(JSC::JSObject* callback, JSDOMGlobalObject* globalObject) - { - return adoptRef(new JSTestCallback(callback, globalObject)); - } - - virtual ~JSTestCallback(); - - // Functions - virtual bool callbackWithClass1Param(Class1* class1Param); - virtual bool callbackWithClass2Param(Class2* class2Param, const String& strArg); - COMPILE_ASSERT(false) virtual int callbackWithNonBoolReturnType(Class3* class3Param); - virtual int customCallback(Class5* class5Param, Class6* class6Param); - -private: - JSTestCallback(JSC::JSObject* callback, JSDOMGlobalObject*); - - JSCallbackData* m_data; -}; - -} // namespace WebCore - -#endif // ENABLE(DATABASE) - -#endif diff --git a/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp b/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp deleted file mode 100644 index 8e71df1..0000000 --- a/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp +++ /dev/null @@ -1,185 +0,0 @@ -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include "config.h" - -#if ENABLE(Condition1) || ENABLE(Condition2) - -#include "JSTestInterface.h" - -#include "TestInterface.h" -#include <wtf/GetPtr.h> - -using namespace JSC; - -namespace WebCore { - -ASSERT_CLASS_FITS_IN_CELL(JSTestInterface); - -/* Hash table */ -#if ENABLE(JIT) -#define THUNK_GENERATOR(generator) , generator -#else -#define THUNK_GENERATOR(generator) -#endif - -static const HashTableValue JSTestInterfaceTableValues[2] = -{ - { "constructor", DontEnum | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceConstructor), (intptr_t)0 THUNK_GENERATOR(0) }, - { 0, 0, 0, 0 THUNK_GENERATOR(0) } -}; - -#undef THUNK_GENERATOR -static JSC_CONST_HASHTABLE HashTable JSTestInterfaceTable = { 2, 1, JSTestInterfaceTableValues, 0 }; -/* Hash table for constructor */ -#if ENABLE(JIT) -#define THUNK_GENERATOR(generator) , generator -#else -#define THUNK_GENERATOR(generator) -#endif - -static const HashTableValue JSTestInterfaceConstructorTableValues[1] = -{ - { 0, 0, 0, 0 THUNK_GENERATOR(0) } -}; - -#undef THUNK_GENERATOR -static JSC_CONST_HASHTABLE HashTable JSTestInterfaceConstructorTable = { 1, 0, JSTestInterfaceConstructorTableValues, 0 }; -class JSTestInterfaceConstructor : public DOMConstructorObject { -public: - JSTestInterfaceConstructor(JSC::ExecState*, JSDOMGlobalObject*); - - virtual bool getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier&, JSC::PropertySlot&); - virtual bool getOwnPropertyDescriptor(JSC::ExecState*, const JSC::Identifier&, JSC::PropertyDescriptor&); - virtual const JSC::ClassInfo* classInfo() const { return &s_info; } - static const JSC::ClassInfo s_info; - static PassRefPtr<JSC::Structure> createStructure(JSC::JSValue prototype) - { - return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount); - } -protected: - static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | JSC::ImplementsHasInstance | DOMConstructorObject::StructureFlags; - static JSC::EncodedJSValue JSC_HOST_CALL constructJSTestInterface(JSC::ExecState*); - virtual JSC::ConstructType getConstructData(JSC::ConstructData&); -}; - -const ClassInfo JSTestInterfaceConstructor::s_info = { "TestInterfaceConstructor", 0, &JSTestInterfaceConstructorTable, 0 }; - -JSTestInterfaceConstructor::JSTestInterfaceConstructor(ExecState* exec, JSDOMGlobalObject* globalObject) - : DOMConstructorObject(JSTestInterfaceConstructor::createStructure(globalObject->objectPrototype()), globalObject) -{ - putDirect(exec->propertyNames().prototype, JSTestInterfacePrototype::self(exec, globalObject), DontDelete | ReadOnly); -} - -bool JSTestInterfaceConstructor::getOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot) -{ - return getStaticValueSlot<JSTestInterfaceConstructor, DOMObject>(exec, &JSTestInterfaceConstructorTable, this, propertyName, slot); -} - -bool JSTestInterfaceConstructor::getOwnPropertyDescriptor(ExecState* exec, const Identifier& propertyName, PropertyDescriptor& descriptor) -{ - return getStaticValueDescriptor<JSTestInterfaceConstructor, DOMObject>(exec, &JSTestInterfaceConstructorTable, this, propertyName, descriptor); -} - -EncodedJSValue JSC_HOST_CALL JSTestInterfaceConstructor::constructJSTestInterface(ExecState* exec) -{ - ScriptExecutionContext* context = static_cast<JSTestInterfaceConstructor*>(exec->callee())->scriptExecutionContext(); - if (!context) - return throwVMError(exec, createReferenceError(exec, "Reference error")); - return JSValue::encode(asObject(toJS(exec, static_cast<JSTestInterfaceConstructor*>(exec->callee())->globalObject(), TestInterface::create(context)))); -} - -ConstructType JSTestInterfaceConstructor::getConstructData(ConstructData& constructData) -{ - constructData.native.function = constructJSTestInterface; - return ConstructTypeHost; -} - -/* Hash table for prototype */ -#if ENABLE(JIT) -#define THUNK_GENERATOR(generator) , generator -#else -#define THUNK_GENERATOR(generator) -#endif - -static const HashTableValue JSTestInterfacePrototypeTableValues[1] = -{ - { 0, 0, 0, 0 THUNK_GENERATOR(0) } -}; - -#undef THUNK_GENERATOR -static JSC_CONST_HASHTABLE HashTable JSTestInterfacePrototypeTable = { 1, 0, JSTestInterfacePrototypeTableValues, 0 }; -const ClassInfo JSTestInterfacePrototype::s_info = { "TestInterfacePrototype", 0, &JSTestInterfacePrototypeTable, 0 }; - -JSObject* JSTestInterfacePrototype::self(ExecState* exec, JSGlobalObject* globalObject) -{ - return getDOMPrototype<JSTestInterface>(exec, globalObject); -} - -const ClassInfo JSTestInterface::s_info = { "TestInterface", 0, &JSTestInterfaceTable, 0 }; - -JSTestInterface::JSTestInterface(NonNullPassRefPtr<Structure> structure, JSDOMGlobalObject* globalObject, PassRefPtr<TestInterface> impl) - : DOMObjectWithGlobalPointer(structure, globalObject) - , m_impl(impl) -{ -} - -JSTestInterface::~JSTestInterface() -{ - forgetDOMObject(this, impl()); -} - -JSObject* JSTestInterface::createPrototype(ExecState* exec, JSGlobalObject* globalObject) -{ - return new (exec) JSTestInterfacePrototype(globalObject, JSTestInterfacePrototype::createStructure(globalObject->objectPrototype())); -} - -bool JSTestInterface::getOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot) -{ - return getStaticValueSlot<JSTestInterface, Base>(exec, &JSTestInterfaceTable, this, propertyName, slot); -} - -bool JSTestInterface::getOwnPropertyDescriptor(ExecState* exec, const Identifier& propertyName, PropertyDescriptor& descriptor) -{ - return getStaticValueDescriptor<JSTestInterface, Base>(exec, &JSTestInterfaceTable, this, propertyName, descriptor); -} - -JSValue jsTestInterfaceConstructor(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestInterface* domObject = static_cast<JSTestInterface*>(asObject(slotBase)); - return JSTestInterface::getConstructor(exec, domObject->globalObject()); -} -JSValue JSTestInterface::getConstructor(ExecState* exec, JSGlobalObject* globalObject) -{ - return getDOMConstructor<JSTestInterfaceConstructor>(exec, static_cast<JSDOMGlobalObject*>(globalObject)); -} - -JSC::JSValue toJS(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, TestInterface* object) -{ - return getDOMObjectWrapper<JSTestInterface>(exec, globalObject, object); -} -TestInterface* toTestInterface(JSC::JSValue value) -{ - return value.inherits(&JSTestInterface::s_info) ? static_cast<JSTestInterface*>(asObject(value))->impl() : 0; -} - -} - -#endif // ENABLE(Condition1) || ENABLE(Condition2) diff --git a/WebCore/bindings/scripts/test/JS/JSTestInterface.h b/WebCore/bindings/scripts/test/JS/JSTestInterface.h deleted file mode 100644 index 09d7d7c..0000000 --- a/WebCore/bindings/scripts/test/JS/JSTestInterface.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef JSTestInterface_h -#define JSTestInterface_h - -#if ENABLE(Condition1) || ENABLE(Condition2) - -#include "JSDOMBinding.h" -#include <runtime/JSGlobalObject.h> -#include <runtime/JSObjectWithGlobalObject.h> -#include <runtime/ObjectPrototype.h> - -namespace WebCore { - -class TestInterface; - -class JSTestInterface : public DOMObjectWithGlobalPointer { - typedef DOMObjectWithGlobalPointer Base; -public: - JSTestInterface(NonNullPassRefPtr<JSC::Structure>, JSDOMGlobalObject*, PassRefPtr<TestInterface>); - virtual ~JSTestInterface(); - static JSC::JSObject* createPrototype(JSC::ExecState*, JSC::JSGlobalObject*); - virtual bool getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::PropertySlot&); - virtual bool getOwnPropertyDescriptor(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::PropertyDescriptor&); - virtual const JSC::ClassInfo* classInfo() const { return &s_info; } - static const JSC::ClassInfo s_info; - - static PassRefPtr<JSC::Structure> createStructure(JSC::JSValue prototype) - { - return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount); - } - - static JSC::JSValue getConstructor(JSC::ExecState*, JSC::JSGlobalObject*); - TestInterface* impl() const { return m_impl.get(); } - -private: - RefPtr<TestInterface> m_impl; -protected: - static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | Base::StructureFlags; -}; - -JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, TestInterface*); -TestInterface* toTestInterface(JSC::JSValue); - -class JSTestInterfacePrototype : public JSC::JSObjectWithGlobalObject { - typedef JSC::JSObjectWithGlobalObject Base; -public: - static JSC::JSObject* self(JSC::ExecState*, JSC::JSGlobalObject*); - virtual const JSC::ClassInfo* classInfo() const { return &s_info; } - static const JSC::ClassInfo s_info; - static PassRefPtr<JSC::Structure> createStructure(JSC::JSValue prototype) - { - return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount); - } - JSTestInterfacePrototype(JSC::JSGlobalObject* globalObject, NonNullPassRefPtr<JSC::Structure> structure) : JSC::JSObjectWithGlobalObject(globalObject, structure) { } -protected: - static const unsigned StructureFlags = Base::StructureFlags; -}; - -// Attributes - -JSC::JSValue jsTestInterfaceConstructor(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); - -} // namespace WebCore - -#endif // ENABLE(Condition1) || ENABLE(Condition2) - -#endif diff --git a/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp b/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp deleted file mode 100644 index e505ed2..0000000 --- a/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp +++ /dev/null @@ -1,194 +0,0 @@ -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include "config.h" -#include "JSTestMediaQueryListListener.h" - -#include "ExceptionCode.h" -#include "JSDOMBinding.h" -#include "MediaQueryListListener.h" -#include "TestMediaQueryListListener.h" -#include <runtime/Error.h> -#include <wtf/GetPtr.h> - -using namespace JSC; - -namespace WebCore { - -ASSERT_CLASS_FITS_IN_CELL(JSTestMediaQueryListListener); - -/* Hash table */ -#if ENABLE(JIT) -#define THUNK_GENERATOR(generator) , generator -#else -#define THUNK_GENERATOR(generator) -#endif - -static const HashTableValue JSTestMediaQueryListListenerTableValues[2] = -{ - { "constructor", DontEnum | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestMediaQueryListListenerConstructor), (intptr_t)0 THUNK_GENERATOR(0) }, - { 0, 0, 0, 0 THUNK_GENERATOR(0) } -}; - -#undef THUNK_GENERATOR -static JSC_CONST_HASHTABLE HashTable JSTestMediaQueryListListenerTable = { 2, 1, JSTestMediaQueryListListenerTableValues, 0 }; -/* Hash table for constructor */ -#if ENABLE(JIT) -#define THUNK_GENERATOR(generator) , generator -#else -#define THUNK_GENERATOR(generator) -#endif - -static const HashTableValue JSTestMediaQueryListListenerConstructorTableValues[1] = -{ - { 0, 0, 0, 0 THUNK_GENERATOR(0) } -}; - -#undef THUNK_GENERATOR -static JSC_CONST_HASHTABLE HashTable JSTestMediaQueryListListenerConstructorTable = { 1, 0, JSTestMediaQueryListListenerConstructorTableValues, 0 }; -class JSTestMediaQueryListListenerConstructor : public DOMConstructorObject { -public: - JSTestMediaQueryListListenerConstructor(JSC::ExecState*, JSDOMGlobalObject*); - - virtual bool getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier&, JSC::PropertySlot&); - virtual bool getOwnPropertyDescriptor(JSC::ExecState*, const JSC::Identifier&, JSC::PropertyDescriptor&); - virtual const JSC::ClassInfo* classInfo() const { return &s_info; } - static const JSC::ClassInfo s_info; - static PassRefPtr<JSC::Structure> createStructure(JSC::JSValue prototype) - { - return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount); - } -protected: - static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | JSC::ImplementsHasInstance | DOMConstructorObject::StructureFlags; -}; - -const ClassInfo JSTestMediaQueryListListenerConstructor::s_info = { "TestMediaQueryListListenerConstructor", 0, &JSTestMediaQueryListListenerConstructorTable, 0 }; - -JSTestMediaQueryListListenerConstructor::JSTestMediaQueryListListenerConstructor(ExecState* exec, JSDOMGlobalObject* globalObject) - : DOMConstructorObject(JSTestMediaQueryListListenerConstructor::createStructure(globalObject->objectPrototype()), globalObject) -{ - putDirect(exec->propertyNames().prototype, JSTestMediaQueryListListenerPrototype::self(exec, globalObject), DontDelete | ReadOnly); -} - -bool JSTestMediaQueryListListenerConstructor::getOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot) -{ - return getStaticValueSlot<JSTestMediaQueryListListenerConstructor, DOMObject>(exec, &JSTestMediaQueryListListenerConstructorTable, this, propertyName, slot); -} - -bool JSTestMediaQueryListListenerConstructor::getOwnPropertyDescriptor(ExecState* exec, const Identifier& propertyName, PropertyDescriptor& descriptor) -{ - return getStaticValueDescriptor<JSTestMediaQueryListListenerConstructor, DOMObject>(exec, &JSTestMediaQueryListListenerConstructorTable, this, propertyName, descriptor); -} - -/* Hash table for prototype */ -#if ENABLE(JIT) -#define THUNK_GENERATOR(generator) , generator -#else -#define THUNK_GENERATOR(generator) -#endif - -static const HashTableValue JSTestMediaQueryListListenerPrototypeTableValues[2] = -{ - { "method", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestMediaQueryListListenerPrototypeFunctionMethod), (intptr_t)1 THUNK_GENERATOR(0) }, - { 0, 0, 0, 0 THUNK_GENERATOR(0) } -}; - -#undef THUNK_GENERATOR -static JSC_CONST_HASHTABLE HashTable JSTestMediaQueryListListenerPrototypeTable = { 2, 1, JSTestMediaQueryListListenerPrototypeTableValues, 0 }; -const ClassInfo JSTestMediaQueryListListenerPrototype::s_info = { "TestMediaQueryListListenerPrototype", 0, &JSTestMediaQueryListListenerPrototypeTable, 0 }; - -JSObject* JSTestMediaQueryListListenerPrototype::self(ExecState* exec, JSGlobalObject* globalObject) -{ - return getDOMPrototype<JSTestMediaQueryListListener>(exec, globalObject); -} - -bool JSTestMediaQueryListListenerPrototype::getOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot) -{ - return getStaticFunctionSlot<JSObject>(exec, &JSTestMediaQueryListListenerPrototypeTable, this, propertyName, slot); -} - -bool JSTestMediaQueryListListenerPrototype::getOwnPropertyDescriptor(ExecState* exec, const Identifier& propertyName, PropertyDescriptor& descriptor) -{ - return getStaticFunctionDescriptor<JSObject>(exec, &JSTestMediaQueryListListenerPrototypeTable, this, propertyName, descriptor); -} - -const ClassInfo JSTestMediaQueryListListener::s_info = { "TestMediaQueryListListener", 0, &JSTestMediaQueryListListenerTable, 0 }; - -JSTestMediaQueryListListener::JSTestMediaQueryListListener(NonNullPassRefPtr<Structure> structure, JSDOMGlobalObject* globalObject, PassRefPtr<TestMediaQueryListListener> impl) - : DOMObjectWithGlobalPointer(structure, globalObject) - , m_impl(impl) -{ -} - -JSTestMediaQueryListListener::~JSTestMediaQueryListListener() -{ - forgetDOMObject(this, impl()); -} - -JSObject* JSTestMediaQueryListListener::createPrototype(ExecState* exec, JSGlobalObject* globalObject) -{ - return new (exec) JSTestMediaQueryListListenerPrototype(globalObject, JSTestMediaQueryListListenerPrototype::createStructure(globalObject->objectPrototype())); -} - -bool JSTestMediaQueryListListener::getOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot) -{ - return getStaticValueSlot<JSTestMediaQueryListListener, Base>(exec, &JSTestMediaQueryListListenerTable, this, propertyName, slot); -} - -bool JSTestMediaQueryListListener::getOwnPropertyDescriptor(ExecState* exec, const Identifier& propertyName, PropertyDescriptor& descriptor) -{ - return getStaticValueDescriptor<JSTestMediaQueryListListener, Base>(exec, &JSTestMediaQueryListListenerTable, this, propertyName, descriptor); -} - -JSValue jsTestMediaQueryListListenerConstructor(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestMediaQueryListListener* domObject = static_cast<JSTestMediaQueryListListener*>(asObject(slotBase)); - return JSTestMediaQueryListListener::getConstructor(exec, domObject->globalObject()); -} -JSValue JSTestMediaQueryListListener::getConstructor(ExecState* exec, JSGlobalObject* globalObject) -{ - return getDOMConstructor<JSTestMediaQueryListListenerConstructor>(exec, static_cast<JSDOMGlobalObject*>(globalObject)); -} - -EncodedJSValue JSC_HOST_CALL jsTestMediaQueryListListenerPrototypeFunctionMethod(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestMediaQueryListListener::s_info)) - return throwVMTypeError(exec); - JSTestMediaQueryListListener* castedThis = static_cast<JSTestMediaQueryListListener*>(asObject(thisValue)); - TestMediaQueryListListener* imp = static_cast<TestMediaQueryListListener*>(castedThis->impl()); - RefPtr<MediaQueryListListener> listener = MediaQueryListListener::create(exec->argument(0)); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - - imp->method(listener); - return JSValue::encode(jsUndefined()); -} - -JSC::JSValue toJS(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, TestMediaQueryListListener* object) -{ - return getDOMObjectWrapper<JSTestMediaQueryListListener>(exec, globalObject, object); -} -TestMediaQueryListListener* toTestMediaQueryListListener(JSC::JSValue value) -{ - return value.inherits(&JSTestMediaQueryListListener::s_info) ? static_cast<JSTestMediaQueryListListener*>(asObject(value))->impl() : 0; -} - -} diff --git a/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.h b/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.h deleted file mode 100644 index 1863703..0000000 --- a/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.h +++ /dev/null @@ -1,87 +0,0 @@ -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef JSTestMediaQueryListListener_h -#define JSTestMediaQueryListListener_h - -#include "JSDOMBinding.h" -#include <runtime/JSGlobalObject.h> -#include <runtime/JSObjectWithGlobalObject.h> -#include <runtime/ObjectPrototype.h> - -namespace WebCore { - -class TestMediaQueryListListener; - -class JSTestMediaQueryListListener : public DOMObjectWithGlobalPointer { - typedef DOMObjectWithGlobalPointer Base; -public: - JSTestMediaQueryListListener(NonNullPassRefPtr<JSC::Structure>, JSDOMGlobalObject*, PassRefPtr<TestMediaQueryListListener>); - virtual ~JSTestMediaQueryListListener(); - static JSC::JSObject* createPrototype(JSC::ExecState*, JSC::JSGlobalObject*); - virtual bool getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::PropertySlot&); - virtual bool getOwnPropertyDescriptor(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::PropertyDescriptor&); - virtual const JSC::ClassInfo* classInfo() const { return &s_info; } - static const JSC::ClassInfo s_info; - - static PassRefPtr<JSC::Structure> createStructure(JSC::JSValue prototype) - { - return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount); - } - - static JSC::JSValue getConstructor(JSC::ExecState*, JSC::JSGlobalObject*); - TestMediaQueryListListener* impl() const { return m_impl.get(); } - -private: - RefPtr<TestMediaQueryListListener> m_impl; -protected: - static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | Base::StructureFlags; -}; - -JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, TestMediaQueryListListener*); -TestMediaQueryListListener* toTestMediaQueryListListener(JSC::JSValue); - -class JSTestMediaQueryListListenerPrototype : public JSC::JSObjectWithGlobalObject { - typedef JSC::JSObjectWithGlobalObject Base; -public: - static JSC::JSObject* self(JSC::ExecState*, JSC::JSGlobalObject*); - virtual const JSC::ClassInfo* classInfo() const { return &s_info; } - static const JSC::ClassInfo s_info; - virtual bool getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier&, JSC::PropertySlot&); - virtual bool getOwnPropertyDescriptor(JSC::ExecState*, const JSC::Identifier&, JSC::PropertyDescriptor&); - static PassRefPtr<JSC::Structure> createStructure(JSC::JSValue prototype) - { - return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount); - } - JSTestMediaQueryListListenerPrototype(JSC::JSGlobalObject* globalObject, NonNullPassRefPtr<JSC::Structure> structure) : JSC::JSObjectWithGlobalObject(globalObject, structure) { } -protected: - static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | Base::StructureFlags; -}; - -// Functions - -JSC::EncodedJSValue JSC_HOST_CALL jsTestMediaQueryListListenerPrototypeFunctionMethod(JSC::ExecState*); -// Attributes - -JSC::JSValue jsTestMediaQueryListListenerConstructor(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); - -} // namespace WebCore - -#endif diff --git a/WebCore/bindings/scripts/test/JS/JSTestObj.cpp b/WebCore/bindings/scripts/test/JS/JSTestObj.cpp deleted file mode 100644 index c4c77ee..0000000 --- a/WebCore/bindings/scripts/test/JS/JSTestObj.cpp +++ /dev/null @@ -1,1646 +0,0 @@ -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include "config.h" -#include "JSTestObj.h" - -#include "ExceptionCode.h" -#include "HTMLNames.h" -#include "IDBBindingUtilities.h" -#include "IDBKey.h" -#include "JSDOMBinding.h" -#include "JSEventListener.h" -#include "JSOptionsObject.h" -#include "JSTestCallback.h" -#include "JSTestObj.h" -#include "JSlog.h" -#include "KURL.h" -#include "ScriptArguments.h" -#include "ScriptCallStack.h" -#include "ScriptCallStackFactory.h" -#include "SerializedScriptValue.h" -#include "TestObj.h" -#include <runtime/Error.h> -#include <runtime/JSNumberCell.h> -#include <runtime/JSString.h> -#include <wtf/GetPtr.h> - -using namespace JSC; - -namespace WebCore { - -ASSERT_CLASS_FITS_IN_CELL(JSTestObj); - -/* Hash table */ -#if ENABLE(JIT) -#define THUNK_GENERATOR(generator) , generator -#else -#define THUNK_GENERATOR(generator) -#endif - -static const HashTableValue JSTestObjTableValues[37] = -{ - { "readOnlyIntAttr", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReadOnlyIntAttr), (intptr_t)0 THUNK_GENERATOR(0) }, - { "readOnlyStringAttr", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReadOnlyStringAttr), (intptr_t)0 THUNK_GENERATOR(0) }, - { "readOnlyTestObjAttr", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReadOnlyTestObjAttr), (intptr_t)0 THUNK_GENERATOR(0) }, - { "shortAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjShortAttr), (intptr_t)setJSTestObjShortAttr THUNK_GENERATOR(0) }, - { "unsignedShortAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjUnsignedShortAttr), (intptr_t)setJSTestObjUnsignedShortAttr THUNK_GENERATOR(0) }, - { "intAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjIntAttr), (intptr_t)setJSTestObjIntAttr THUNK_GENERATOR(0) }, - { "longLongAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjLongLongAttr), (intptr_t)setJSTestObjLongLongAttr THUNK_GENERATOR(0) }, - { "unsignedLongLongAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjUnsignedLongLongAttr), (intptr_t)setJSTestObjUnsignedLongLongAttr THUNK_GENERATOR(0) }, - { "stringAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringAttr), (intptr_t)setJSTestObjStringAttr THUNK_GENERATOR(0) }, - { "testObjAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjTestObjAttr), (intptr_t)setJSTestObjTestObjAttr THUNK_GENERATOR(0) }, - { "XMLObjAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjXMLObjAttr), (intptr_t)setJSTestObjXMLObjAttr THUNK_GENERATOR(0) }, - { "create", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCreate), (intptr_t)setJSTestObjCreate THUNK_GENERATOR(0) }, - { "reflectedStringAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedStringAttr), (intptr_t)setJSTestObjReflectedStringAttr THUNK_GENERATOR(0) }, - { "reflectedIntegralAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedIntegralAttr), (intptr_t)setJSTestObjReflectedIntegralAttr THUNK_GENERATOR(0) }, - { "reflectedUnsignedIntegralAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedUnsignedIntegralAttr), (intptr_t)setJSTestObjReflectedUnsignedIntegralAttr THUNK_GENERATOR(0) }, - { "reflectedBooleanAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedBooleanAttr), (intptr_t)setJSTestObjReflectedBooleanAttr THUNK_GENERATOR(0) }, - { "reflectedURLAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedURLAttr), (intptr_t)setJSTestObjReflectedURLAttr THUNK_GENERATOR(0) }, - { "reflectedNonEmptyURLAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedNonEmptyURLAttr), (intptr_t)setJSTestObjReflectedNonEmptyURLAttr THUNK_GENERATOR(0) }, - { "reflectedStringAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedStringAttr), (intptr_t)setJSTestObjReflectedStringAttr THUNK_GENERATOR(0) }, - { "reflectedCustomIntegralAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedCustomIntegralAttr), (intptr_t)setJSTestObjReflectedCustomIntegralAttr THUNK_GENERATOR(0) }, - { "reflectedCustomBooleanAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedCustomBooleanAttr), (intptr_t)setJSTestObjReflectedCustomBooleanAttr THUNK_GENERATOR(0) }, - { "reflectedCustomURLAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedCustomURLAttr), (intptr_t)setJSTestObjReflectedCustomURLAttr THUNK_GENERATOR(0) }, - { "reflectedCustomNonEmptyURLAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedCustomNonEmptyURLAttr), (intptr_t)setJSTestObjReflectedCustomNonEmptyURLAttr THUNK_GENERATOR(0) }, - { "attrWithGetterException", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAttrWithGetterException), (intptr_t)setJSTestObjAttrWithGetterException THUNK_GENERATOR(0) }, - { "attrWithSetterException", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAttrWithSetterException), (intptr_t)setJSTestObjAttrWithSetterException THUNK_GENERATOR(0) }, - { "stringAttrWithGetterException", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringAttrWithGetterException), (intptr_t)setJSTestObjStringAttrWithGetterException THUNK_GENERATOR(0) }, - { "stringAttrWithSetterException", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringAttrWithSetterException), (intptr_t)setJSTestObjStringAttrWithSetterException THUNK_GENERATOR(0) }, - { "customAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCustomAttr), (intptr_t)setJSTestObjCustomAttr THUNK_GENERATOR(0) }, - { "scriptStringAttr", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjScriptStringAttr), (intptr_t)0 THUNK_GENERATOR(0) }, -#if ENABLE(Condition1) - { "conditionalAttr1", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConditionalAttr1), (intptr_t)setJSTestObjConditionalAttr1 THUNK_GENERATOR(0) }, -#endif -#if ENABLE(Condition1) && ENABLE(Condition2) - { "conditionalAttr2", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConditionalAttr2), (intptr_t)setJSTestObjConditionalAttr2 THUNK_GENERATOR(0) }, -#endif -#if ENABLE(Condition1) || ENABLE(Condition2) - { "conditionalAttr3", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConditionalAttr3), (intptr_t)setJSTestObjConditionalAttr3 THUNK_GENERATOR(0) }, -#endif - { "description", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjDescription), (intptr_t)0 THUNK_GENERATOR(0) }, - { "id", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjId), (intptr_t)setJSTestObjId THUNK_GENERATOR(0) }, - { "hash", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjHash), (intptr_t)0 THUNK_GENERATOR(0) }, - { "constructor", DontEnum | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConstructor), (intptr_t)0 THUNK_GENERATOR(0) }, - { 0, 0, 0, 0 THUNK_GENERATOR(0) } -}; - -#undef THUNK_GENERATOR -static JSC_CONST_HASHTABLE HashTable JSTestObjTable = { 133, 127, JSTestObjTableValues, 0 }; -/* Hash table for constructor */ -#if ENABLE(JIT) -#define THUNK_GENERATOR(generator) , generator -#else -#define THUNK_GENERATOR(generator) -#endif - -static const HashTableValue JSTestObjConstructorTableValues[12] = -{ - { "CONST_VALUE_0", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_0), (intptr_t)0 THUNK_GENERATOR(0) }, - { "CONST_VALUE_1", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_1), (intptr_t)0 THUNK_GENERATOR(0) }, - { "CONST_VALUE_2", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_2), (intptr_t)0 THUNK_GENERATOR(0) }, - { "CONST_VALUE_4", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_4), (intptr_t)0 THUNK_GENERATOR(0) }, - { "CONST_VALUE_8", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_8), (intptr_t)0 THUNK_GENERATOR(0) }, - { "CONST_VALUE_9", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_9), (intptr_t)0 THUNK_GENERATOR(0) }, - { "CONST_VALUE_10", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_10), (intptr_t)0 THUNK_GENERATOR(0) }, - { "CONST_VALUE_11", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_11), (intptr_t)0 THUNK_GENERATOR(0) }, - { "CONST_VALUE_12", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_12), (intptr_t)0 THUNK_GENERATOR(0) }, - { "CONST_VALUE_13", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_13), (intptr_t)0 THUNK_GENERATOR(0) }, - { "CONST_VALUE_14", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_14), (intptr_t)0 THUNK_GENERATOR(0) }, - { 0, 0, 0, 0 THUNK_GENERATOR(0) } -}; - -#undef THUNK_GENERATOR -static JSC_CONST_HASHTABLE HashTable JSTestObjConstructorTable = { 33, 31, JSTestObjConstructorTableValues, 0 }; - -COMPILE_ASSERT(0 == TestObj::CONST_VALUE_0, TestObjEnumCONST_VALUE_0IsWrongUseDontCheckEnums); -COMPILE_ASSERT(1 == TestObj::CONST_VALUE_1, TestObjEnumCONST_VALUE_1IsWrongUseDontCheckEnums); -COMPILE_ASSERT(2 == TestObj::CONST_VALUE_2, TestObjEnumCONST_VALUE_2IsWrongUseDontCheckEnums); -COMPILE_ASSERT(4 == TestObj::CONST_VALUE_4, TestObjEnumCONST_VALUE_4IsWrongUseDontCheckEnums); -COMPILE_ASSERT(8 == TestObj::CONST_VALUE_8, TestObjEnumCONST_VALUE_8IsWrongUseDontCheckEnums); -COMPILE_ASSERT(-1 == TestObj::CONST_VALUE_9, TestObjEnumCONST_VALUE_9IsWrongUseDontCheckEnums); -COMPILE_ASSERT("my constant string" == TestObj::CONST_VALUE_10, TestObjEnumCONST_VALUE_10IsWrongUseDontCheckEnums); -COMPILE_ASSERT(0xffffffff == TestObj::CONST_VALUE_11, TestObjEnumCONST_VALUE_11IsWrongUseDontCheckEnums); -COMPILE_ASSERT(0x01 == TestObj::CONST_VALUE_12, TestObjEnumCONST_VALUE_12IsWrongUseDontCheckEnums); -COMPILE_ASSERT(0X20 == TestObj::CONST_VALUE_13, TestObjEnumCONST_VALUE_13IsWrongUseDontCheckEnums); -COMPILE_ASSERT(0x1abc == TestObj::CONST_VALUE_14, TestObjEnumCONST_VALUE_14IsWrongUseDontCheckEnums); - -class JSTestObjConstructor : public DOMConstructorObject { -public: - JSTestObjConstructor(JSC::ExecState*, JSDOMGlobalObject*); - - virtual bool getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier&, JSC::PropertySlot&); - virtual bool getOwnPropertyDescriptor(JSC::ExecState*, const JSC::Identifier&, JSC::PropertyDescriptor&); - virtual const JSC::ClassInfo* classInfo() const { return &s_info; } - static const JSC::ClassInfo s_info; - static PassRefPtr<JSC::Structure> createStructure(JSC::JSValue prototype) - { - return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount); - } -protected: - static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | JSC::ImplementsHasInstance | DOMConstructorObject::StructureFlags; -}; - -const ClassInfo JSTestObjConstructor::s_info = { "TestObjConstructor", 0, &JSTestObjConstructorTable, 0 }; - -JSTestObjConstructor::JSTestObjConstructor(ExecState* exec, JSDOMGlobalObject* globalObject) - : DOMConstructorObject(JSTestObjConstructor::createStructure(globalObject->objectPrototype()), globalObject) -{ - putDirect(exec->propertyNames().prototype, JSTestObjPrototype::self(exec, globalObject), DontDelete | ReadOnly); -} - -bool JSTestObjConstructor::getOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot) -{ - return getStaticValueSlot<JSTestObjConstructor, DOMObject>(exec, &JSTestObjConstructorTable, this, propertyName, slot); -} - -bool JSTestObjConstructor::getOwnPropertyDescriptor(ExecState* exec, const Identifier& propertyName, PropertyDescriptor& descriptor) -{ - return getStaticValueDescriptor<JSTestObjConstructor, DOMObject>(exec, &JSTestObjConstructorTable, this, propertyName, descriptor); -} - -/* Hash table for prototype */ -#if ENABLE(JIT) -#define THUNK_GENERATOR(generator) , generator -#else -#define THUNK_GENERATOR(generator) -#endif - -static const HashTableValue JSTestObjPrototypeTableValues[48] = -{ - { "CONST_VALUE_0", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_0), (intptr_t)0 THUNK_GENERATOR(0) }, - { "CONST_VALUE_1", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_1), (intptr_t)0 THUNK_GENERATOR(0) }, - { "CONST_VALUE_2", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_2), (intptr_t)0 THUNK_GENERATOR(0) }, - { "CONST_VALUE_4", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_4), (intptr_t)0 THUNK_GENERATOR(0) }, - { "CONST_VALUE_8", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_8), (intptr_t)0 THUNK_GENERATOR(0) }, - { "CONST_VALUE_9", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_9), (intptr_t)0 THUNK_GENERATOR(0) }, - { "CONST_VALUE_10", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_10), (intptr_t)0 THUNK_GENERATOR(0) }, - { "CONST_VALUE_11", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_11), (intptr_t)0 THUNK_GENERATOR(0) }, - { "CONST_VALUE_12", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_12), (intptr_t)0 THUNK_GENERATOR(0) }, - { "CONST_VALUE_13", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_13), (intptr_t)0 THUNK_GENERATOR(0) }, - { "CONST_VALUE_14", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_14), (intptr_t)0 THUNK_GENERATOR(0) }, - { "voidMethod", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionVoidMethod), (intptr_t)0 THUNK_GENERATOR(0) }, - { "voidMethodWithArgs", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionVoidMethodWithArgs), (intptr_t)3 THUNK_GENERATOR(0) }, - { "intMethod", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionIntMethod), (intptr_t)0 THUNK_GENERATOR(0) }, - { "intMethodWithArgs", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionIntMethodWithArgs), (intptr_t)3 THUNK_GENERATOR(0) }, - { "objMethod", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionObjMethod), (intptr_t)0 THUNK_GENERATOR(0) }, - { "objMethodWithArgs", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionObjMethodWithArgs), (intptr_t)3 THUNK_GENERATOR(0) }, - { "methodThatRequiresAllArgs", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodThatRequiresAllArgs), (intptr_t)2 THUNK_GENERATOR(0) }, - { "methodThatRequiresAllArgsAndThrows", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodThatRequiresAllArgsAndThrows), (intptr_t)2 THUNK_GENERATOR(0) }, - { "serializedValue", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionSerializedValue), (intptr_t)1 THUNK_GENERATOR(0) }, - { "idbKey", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionIdbKey), (intptr_t)1 THUNK_GENERATOR(0) }, - { "optionsObject", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionOptionsObject), (intptr_t)2 THUNK_GENERATOR(0) }, - { "methodWithException", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithException), (intptr_t)0 THUNK_GENERATOR(0) }, - { "customMethod", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionCustomMethod), (intptr_t)0 THUNK_GENERATOR(0) }, - { "customMethodWithArgs", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionCustomMethodWithArgs), (intptr_t)3 THUNK_GENERATOR(0) }, - { "customArgsAndException", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionCustomArgsAndException), (intptr_t)1 THUNK_GENERATOR(0) }, - { "addEventListener", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionAddEventListener), (intptr_t)3 THUNK_GENERATOR(0) }, - { "removeEventListener", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionRemoveEventListener), (intptr_t)3 THUNK_GENERATOR(0) }, - { "withDynamicFrame", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithDynamicFrame), (intptr_t)0 THUNK_GENERATOR(0) }, - { "withDynamicFrameAndArg", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithDynamicFrameAndArg), (intptr_t)1 THUNK_GENERATOR(0) }, - { "withDynamicFrameAndOptionalArg", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithDynamicFrameAndOptionalArg), (intptr_t)2 THUNK_GENERATOR(0) }, - { "withDynamicFrameAndUserGesture", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithDynamicFrameAndUserGesture), (intptr_t)1 THUNK_GENERATOR(0) }, - { "withDynamicFrameAndUserGestureASAD", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithDynamicFrameAndUserGestureASAD), (intptr_t)2 THUNK_GENERATOR(0) }, - { "withScriptStateVoid", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithScriptStateVoid), (intptr_t)0 THUNK_GENERATOR(0) }, - { "withScriptStateObj", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithScriptStateObj), (intptr_t)0 THUNK_GENERATOR(0) }, - { "withScriptStateVoidException", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithScriptStateVoidException), (intptr_t)0 THUNK_GENERATOR(0) }, - { "withScriptStateObjException", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithScriptStateObjException), (intptr_t)0 THUNK_GENERATOR(0) }, - { "withScriptExecutionContext", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithScriptExecutionContext), (intptr_t)0 THUNK_GENERATOR(0) }, - { "methodWithOptionalArg", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithOptionalArg), (intptr_t)1 THUNK_GENERATOR(0) }, - { "methodWithNonOptionalArgAndOptionalArg", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndOptionalArg), (intptr_t)2 THUNK_GENERATOR(0) }, - { "methodWithNonOptionalArgAndTwoOptionalArgs", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndTwoOptionalArgs), (intptr_t)3 THUNK_GENERATOR(0) }, - { "methodWithCallbackArg", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithCallbackArg), (intptr_t)1 THUNK_GENERATOR(0) }, - { "methodWithNonCallbackArgAndCallbackArg", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackArg), (intptr_t)2 THUNK_GENERATOR(0) }, - { "methodWithCallbackAndOptionalArg", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithCallbackAndOptionalArg), (intptr_t)1 THUNK_GENERATOR(0) }, - { "overloadedMethod", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionOverloadedMethod), (intptr_t)2 THUNK_GENERATOR(0) }, - { "classMethod", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionClassMethod), (intptr_t)0 THUNK_GENERATOR(0) }, - { "classMethodWithOptional", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionClassMethodWithOptional), (intptr_t)1 THUNK_GENERATOR(0) }, - { 0, 0, 0, 0 THUNK_GENERATOR(0) } -}; - -#undef THUNK_GENERATOR -static JSC_CONST_HASHTABLE HashTable JSTestObjPrototypeTable = { 136, 127, JSTestObjPrototypeTableValues, 0 }; -const ClassInfo JSTestObjPrototype::s_info = { "TestObjPrototype", 0, &JSTestObjPrototypeTable, 0 }; - -JSObject* JSTestObjPrototype::self(ExecState* exec, JSGlobalObject* globalObject) -{ - return getDOMPrototype<JSTestObj>(exec, globalObject); -} - -bool JSTestObjPrototype::getOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot) -{ - return getStaticPropertySlot<JSTestObjPrototype, JSObject>(exec, &JSTestObjPrototypeTable, this, propertyName, slot); -} - -bool JSTestObjPrototype::getOwnPropertyDescriptor(ExecState* exec, const Identifier& propertyName, PropertyDescriptor& descriptor) -{ - return getStaticPropertyDescriptor<JSTestObjPrototype, JSObject>(exec, &JSTestObjPrototypeTable, this, propertyName, descriptor); -} - -const ClassInfo JSTestObj::s_info = { "TestObj", 0, &JSTestObjTable, 0 }; - -JSTestObj::JSTestObj(NonNullPassRefPtr<Structure> structure, JSDOMGlobalObject* globalObject, PassRefPtr<TestObj> impl) - : DOMObjectWithGlobalPointer(structure, globalObject) - , m_impl(impl) -{ -} - -JSTestObj::~JSTestObj() -{ - forgetDOMObject(this, impl()); -} - -JSObject* JSTestObj::createPrototype(ExecState* exec, JSGlobalObject* globalObject) -{ - return new (exec) JSTestObjPrototype(globalObject, JSTestObjPrototype::createStructure(globalObject->objectPrototype())); -} - -bool JSTestObj::getOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot) -{ - return getStaticValueSlot<JSTestObj, Base>(exec, &JSTestObjTable, this, propertyName, slot); -} - -bool JSTestObj::getOwnPropertyDescriptor(ExecState* exec, const Identifier& propertyName, PropertyDescriptor& descriptor) -{ - return getStaticValueDescriptor<JSTestObj, Base>(exec, &JSTestObjTable, this, propertyName, descriptor); -} - -JSValue jsTestObjReadOnlyIntAttr(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = jsNumber(imp->readOnlyIntAttr()); - return result; -} - -JSValue jsTestObjReadOnlyStringAttr(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = jsString(exec, imp->readOnlyStringAttr()); - return result; -} - -JSValue jsTestObjReadOnlyTestObjAttr(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(imp->readOnlyTestObjAttr())); - return result; -} - -JSValue jsTestObjShortAttr(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = jsNumber(imp->shortAttr()); - return result; -} - -JSValue jsTestObjUnsignedShortAttr(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = jsNumber(imp->unsignedShortAttr()); - return result; -} - -JSValue jsTestObjIntAttr(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = jsNumber(imp->intAttr()); - return result; -} - -JSValue jsTestObjLongLongAttr(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = jsNumber(imp->longLongAttr()); - return result; -} - -JSValue jsTestObjUnsignedLongLongAttr(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = jsNumber(imp->unsignedLongLongAttr()); - return result; -} - -JSValue jsTestObjStringAttr(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = jsString(exec, imp->stringAttr()); - return result; -} - -JSValue jsTestObjTestObjAttr(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(imp->testObjAttr())); - return result; -} - -JSValue jsTestObjXMLObjAttr(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(imp->xmlObjAttr())); - return result; -} - -JSValue jsTestObjCreate(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = jsBoolean(imp->isCreate()); - return result; -} - -JSValue jsTestObjReflectedStringAttr(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = jsString(exec, imp->getAttribute(WebCore::HTMLNames::reflectedstringattrAttr)); - return result; -} - -JSValue jsTestObjReflectedIntegralAttr(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = jsNumber(imp->getIntegralAttribute(WebCore::HTMLNames::reflectedintegralattrAttr)); - return result; -} - -JSValue jsTestObjReflectedUnsignedIntegralAttr(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = jsNumber(std::max(0, imp->getIntegralAttribute(WebCore::HTMLNames::reflectedunsignedintegralattrAttr))); - return result; -} - -JSValue jsTestObjReflectedBooleanAttr(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = jsBoolean(imp->hasAttribute(WebCore::HTMLNames::reflectedbooleanattrAttr)); - return result; -} - -JSValue jsTestObjReflectedURLAttr(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = jsString(exec, imp->getURLAttribute(WebCore::HTMLNames::reflectedurlattrAttr)); - return result; -} - -JSValue jsTestObjReflectedNonEmptyURLAttr(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = jsString(exec, imp->getNonEmptyURLAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr)); - return result; -} - -JSValue jsTestObjReflectedStringAttr(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = jsString(exec, imp->getAttribute(WebCore::HTMLNames::customContentStringAttrAttr)); - return result; -} - -JSValue jsTestObjReflectedCustomIntegralAttr(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = jsNumber(imp->getIntegralAttribute(WebCore::HTMLNames::customContentIntegralAttrAttr)); - return result; -} - -JSValue jsTestObjReflectedCustomBooleanAttr(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = jsBoolean(imp->hasAttribute(WebCore::HTMLNames::customContentBooleanAttrAttr)); - return result; -} - -JSValue jsTestObjReflectedCustomURLAttr(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = jsString(exec, imp->getURLAttribute(WebCore::HTMLNames::customContentURLAttrAttr)); - return result; -} - -JSValue jsTestObjReflectedCustomNonEmptyURLAttr(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = jsString(exec, imp->getNonEmptyURLAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr)); - return result; -} - -JSValue jsTestObjAttrWithGetterException(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - ExceptionCode ec = 0; - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSC::JSValue result = jsNumber(imp->attrWithGetterException(ec)); - setDOMException(exec, ec); - return result; -} - -JSValue jsTestObjAttrWithSetterException(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = jsNumber(imp->attrWithSetterException()); - return result; -} - -JSValue jsTestObjStringAttrWithGetterException(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - ExceptionCode ec = 0; - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSC::JSValue result = jsString(exec, imp->stringAttrWithGetterException(ec)); - setDOMException(exec, ec); - return result; -} - -JSValue jsTestObjStringAttrWithSetterException(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = jsString(exec, imp->stringAttrWithSetterException()); - return result; -} - -JSValue jsTestObjCustomAttr(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - return castedThis->customAttr(exec); -} - -JSValue jsTestObjScriptStringAttr(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = jsOwnedStringOrNull(exec, imp->scriptStringAttr()); - return result; -} - -#if ENABLE(Condition1) -JSValue jsTestObjConditionalAttr1(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = jsNumber(imp->conditionalAttr1()); - return result; -} -#endif - -#if ENABLE(Condition1) && ENABLE(Condition2) -JSValue jsTestObjConditionalAttr2(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = jsNumber(imp->conditionalAttr2()); - return result; -} -#endif - -#if ENABLE(Condition1) || ENABLE(Condition2) -JSValue jsTestObjConditionalAttr3(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = jsNumber(imp->conditionalAttr3()); - return result; -} -#endif - -JSValue jsTestObjDescription(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = jsNumber(imp->description()); - return result; -} - -JSValue jsTestObjId(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = jsNumber(imp->id()); - return result; -} - -JSValue jsTestObjHash(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase)); - UNUSED_PARAM(exec); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue result = jsString(exec, imp->hash()); - return result; -} - -JSValue jsTestObjConstructor(ExecState* exec, JSValue slotBase, const Identifier&) -{ - JSTestObj* domObject = static_cast<JSTestObj*>(asObject(slotBase)); - return JSTestObj::getConstructor(exec, domObject->globalObject()); -} -void JSTestObj::put(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot) -{ - lookupPut<JSTestObj, Base>(exec, propertyName, value, &JSTestObjTable, this, slot); -} - -void setJSTestObjShortAttr(ExecState* exec, JSObject* thisObject, JSValue value) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - imp->setShortAttr(value.toInt32(exec)); -} - -void setJSTestObjUnsignedShortAttr(ExecState* exec, JSObject* thisObject, JSValue value) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - imp->setUnsignedShortAttr(value.toUInt32(exec)); -} - -void setJSTestObjIntAttr(ExecState* exec, JSObject* thisObject, JSValue value) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - imp->setIntAttr(value.toInt32(exec)); -} - -void setJSTestObjLongLongAttr(ExecState* exec, JSObject* thisObject, JSValue value) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - imp->setLongLongAttr(static_cast<long long>(value.toInteger(exec))); -} - -void setJSTestObjUnsignedLongLongAttr(ExecState* exec, JSObject* thisObject, JSValue value) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - imp->setUnsignedLongLongAttr(static_cast<unsigned long long>(value.toInteger(exec))); -} - -void setJSTestObjStringAttr(ExecState* exec, JSObject* thisObject, JSValue value) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - imp->setStringAttr(ustringToString(value.toString(exec))); -} - -void setJSTestObjTestObjAttr(ExecState* exec, JSObject* thisObject, JSValue value) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - imp->setTestObjAttr(toTestObj(value)); -} - -void setJSTestObjXMLObjAttr(ExecState* exec, JSObject* thisObject, JSValue value) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - imp->setXMLObjAttr(toTestObj(value)); -} - -void setJSTestObjCreate(ExecState* exec, JSObject* thisObject, JSValue value) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - imp->setCreate(value.toBoolean(exec)); -} - -void setJSTestObjReflectedStringAttr(ExecState* exec, JSObject* thisObject, JSValue value) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - imp->setAttribute(WebCore::HTMLNames::reflectedstringattrAttr, valueToStringWithNullCheck(exec, value)); -} - -void setJSTestObjReflectedIntegralAttr(ExecState* exec, JSObject* thisObject, JSValue value) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - imp->setIntegralAttribute(WebCore::HTMLNames::reflectedintegralattrAttr, value.toInt32(exec)); -} - -void setJSTestObjReflectedUnsignedIntegralAttr(ExecState* exec, JSObject* thisObject, JSValue value) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - imp->setUnsignedIntegralAttribute(WebCore::HTMLNames::reflectedunsignedintegralattrAttr, value.toUInt32(exec)); -} - -void setJSTestObjReflectedBooleanAttr(ExecState* exec, JSObject* thisObject, JSValue value) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - imp->setBooleanAttribute(WebCore::HTMLNames::reflectedbooleanattrAttr, value.toBoolean(exec)); -} - -void setJSTestObjReflectedURLAttr(ExecState* exec, JSObject* thisObject, JSValue value) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - imp->setAttribute(WebCore::HTMLNames::reflectedurlattrAttr, valueToStringWithNullCheck(exec, value)); -} - -void setJSTestObjReflectedNonEmptyURLAttr(ExecState* exec, JSObject* thisObject, JSValue value) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - imp->setAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr, valueToStringWithNullCheck(exec, value)); -} - -void setJSTestObjReflectedStringAttr(ExecState* exec, JSObject* thisObject, JSValue value) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - imp->setAttribute(WebCore::HTMLNames::customContentStringAttrAttr, valueToStringWithNullCheck(exec, value)); -} - -void setJSTestObjReflectedCustomIntegralAttr(ExecState* exec, JSObject* thisObject, JSValue value) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - imp->setIntegralAttribute(WebCore::HTMLNames::customContentIntegralAttrAttr, value.toInt32(exec)); -} - -void setJSTestObjReflectedCustomBooleanAttr(ExecState* exec, JSObject* thisObject, JSValue value) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - imp->setBooleanAttribute(WebCore::HTMLNames::customContentBooleanAttrAttr, value.toBoolean(exec)); -} - -void setJSTestObjReflectedCustomURLAttr(ExecState* exec, JSObject* thisObject, JSValue value) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - imp->setAttribute(WebCore::HTMLNames::customContentURLAttrAttr, valueToStringWithNullCheck(exec, value)); -} - -void setJSTestObjReflectedCustomNonEmptyURLAttr(ExecState* exec, JSObject* thisObject, JSValue value) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - imp->setAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr, valueToStringWithNullCheck(exec, value)); -} - -void setJSTestObjAttrWithGetterException(ExecState* exec, JSObject* thisObject, JSValue value) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - ExceptionCode ec = 0; - imp->setAttrWithGetterException(value.toInt32(exec), ec); - setDOMException(exec, ec); -} - -void setJSTestObjAttrWithSetterException(ExecState* exec, JSObject* thisObject, JSValue value) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - ExceptionCode ec = 0; - imp->setAttrWithSetterException(value.toInt32(exec), ec); - setDOMException(exec, ec); -} - -void setJSTestObjStringAttrWithGetterException(ExecState* exec, JSObject* thisObject, JSValue value) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - ExceptionCode ec = 0; - imp->setStringAttrWithGetterException(ustringToString(value.toString(exec)), ec); - setDOMException(exec, ec); -} - -void setJSTestObjStringAttrWithSetterException(ExecState* exec, JSObject* thisObject, JSValue value) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - ExceptionCode ec = 0; - imp->setStringAttrWithSetterException(ustringToString(value.toString(exec)), ec); - setDOMException(exec, ec); -} - -void setJSTestObjCustomAttr(ExecState* exec, JSObject* thisObject, JSValue value) -{ - static_cast<JSTestObj*>(thisObject)->setCustomAttr(exec, value); -} - -#if ENABLE(Condition1) -void setJSTestObjConditionalAttr1(ExecState* exec, JSObject* thisObject, JSValue value) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - imp->setConditionalAttr1(value.toInt32(exec)); -} -#endif - -#if ENABLE(Condition1) && ENABLE(Condition2) -void setJSTestObjConditionalAttr2(ExecState* exec, JSObject* thisObject, JSValue value) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - imp->setConditionalAttr2(value.toInt32(exec)); -} -#endif - -#if ENABLE(Condition1) || ENABLE(Condition2) -void setJSTestObjConditionalAttr3(ExecState* exec, JSObject* thisObject, JSValue value) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - imp->setConditionalAttr3(value.toInt32(exec)); -} -#endif - -void setJSTestObjId(ExecState* exec, JSObject* thisObject, JSValue value) -{ - JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - imp->setId(value.toInt32(exec)); -} - -JSValue JSTestObj::getConstructor(ExecState* exec, JSGlobalObject* globalObject) -{ - return getDOMConstructor<JSTestObjConstructor>(exec, static_cast<JSDOMGlobalObject*>(globalObject)); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionVoidMethod(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - - imp->voidMethod(); - return JSValue::encode(jsUndefined()); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionVoidMethodWithArgs(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - int intArg = exec->argument(0).toInt32(exec); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - const String& strArg = ustringToString(exec->argument(1).toString(exec)); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - TestObj* objArg = toTestObj(exec->argument(2)); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - - imp->voidMethodWithArgs(intArg, strArg, objArg); - return JSValue::encode(jsUndefined()); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionIntMethod(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - - - JSC::JSValue result = jsNumber(imp->intMethod()); - return JSValue::encode(result); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionIntMethodWithArgs(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - int intArg = exec->argument(0).toInt32(exec); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - const String& strArg = ustringToString(exec->argument(1).toString(exec)); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - TestObj* objArg = toTestObj(exec->argument(2)); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - - - JSC::JSValue result = jsNumber(imp->intMethodWithArgs(intArg, strArg, objArg)); - return JSValue::encode(result); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionObjMethod(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - - - JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(imp->objMethod())); - return JSValue::encode(result); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionObjMethodWithArgs(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - int intArg = exec->argument(0).toInt32(exec); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - const String& strArg = ustringToString(exec->argument(1).toString(exec)); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - TestObj* objArg = toTestObj(exec->argument(2)); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - - - JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(imp->objMethodWithArgs(intArg, strArg, objArg))); - return JSValue::encode(result); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodThatRequiresAllArgs(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - if (exec->argumentCount() < 2) - return JSValue::encode(jsUndefined()); - const String& strArg = ustringToString(exec->argument(0).toString(exec)); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - TestObj* objArg = toTestObj(exec->argument(1)); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - - - JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(imp->methodThatRequiresAllArgs(strArg, objArg))); - return JSValue::encode(result); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodThatRequiresAllArgsAndThrows(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - if (exec->argumentCount() < 2) - return throwVMError(exec, createSyntaxError(exec, "Not enough arguments")); - ExceptionCode ec = 0; - const String& strArg = ustringToString(exec->argument(0).toString(exec)); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - TestObj* objArg = toTestObj(exec->argument(1)); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - - - JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(imp->methodThatRequiresAllArgsAndThrows(strArg, objArg, ec))); - setDOMException(exec, ec); - return JSValue::encode(result); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionSerializedValue(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - RefPtr<SerializedScriptValue> serializedArg = SerializedScriptValue::create(exec, exec->argument(0)); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - - imp->serializedValue(serializedArg); - return JSValue::encode(jsUndefined()); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionIdbKey(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - RefPtr<IDBKey> key = createIDBKeyFromValue(exec, exec->argument(0)); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - - imp->idbKey(key); - return JSValue::encode(jsUndefined()); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOptionsObject(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - OptionsObject* oo = toOptionsObject(exec->argument(0)); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - - int argsCount = exec->argumentCount(); - if (argsCount <= 1) { - imp->optionsObject(oo); - return JSValue::encode(jsUndefined()); - } - - OptionsObject* ooo = toOptionsObject(exec->argument(1)); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - - imp->optionsObject(oo, ooo); - return JSValue::encode(jsUndefined()); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithException(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - ExceptionCode ec = 0; - - imp->methodWithException(ec); - setDOMException(exec, ec); - return JSValue::encode(jsUndefined()); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionCustomMethod(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - return JSValue::encode(castedThis->customMethod(exec)); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionCustomMethodWithArgs(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - return JSValue::encode(castedThis->customMethodWithArgs(exec)); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionCustomArgsAndException(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - ExceptionCode ec = 0; - RefPtr<ScriptArguments> scriptArguments(createScriptArguments(exec, 1)); - size_t maxStackSize = imp->shouldCaptureFullStackTrace() ? ScriptCallStack::maxCallStackSizeToCapture : 1; - RefPtr<ScriptCallStack> callStack(createScriptCallStack(exec, maxStackSize)); - log* intArg = tolog(exec->argument(0)); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - - imp->customArgsAndException(intArg, scriptArguments, callStack, ec); - setDOMException(exec, ec); - return JSValue::encode(jsUndefined()); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionAddEventListener(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue listener = exec->argument(1); - if (!listener.isObject()) - return JSValue::encode(jsUndefined()); - imp->addEventListener(ustringToAtomicString(exec->argument(0).toString(exec)), JSEventListener::create(asObject(listener), castedThis, false, currentWorld(exec)), exec->argument(2).toBoolean(exec)); - return JSValue::encode(jsUndefined()); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionRemoveEventListener(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - JSValue listener = exec->argument(1); - if (!listener.isObject()) - return JSValue::encode(jsUndefined()); - imp->removeEventListener(ustringToAtomicString(exec->argument(0).toString(exec)), JSEventListener::create(asObject(listener), castedThis, false, currentWorld(exec)).get(), exec->argument(2).toBoolean(exec)); - return JSValue::encode(jsUndefined()); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithDynamicFrame(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - Frame* dynamicFrame = toDynamicFrame(exec); - if (!dynamicFrame) - return JSValue::encode(jsUndefined()); - - imp->withDynamicFrame(dynamicFrame); - return JSValue::encode(jsUndefined()); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithDynamicFrameAndArg(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - Frame* dynamicFrame = toDynamicFrame(exec); - if (!dynamicFrame) - return JSValue::encode(jsUndefined()); - int intArg = exec->argument(0).toInt32(exec); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - - imp->withDynamicFrameAndArg(dynamicFrame, intArg); - return JSValue::encode(jsUndefined()); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithDynamicFrameAndOptionalArg(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - Frame* dynamicFrame = toDynamicFrame(exec); - if (!dynamicFrame) - return JSValue::encode(jsUndefined()); - int intArg = exec->argument(0).toInt32(exec); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - - int argsCount = exec->argumentCount(); - if (argsCount <= 1) { - imp->withDynamicFrameAndOptionalArg(dynamicFrame, intArg); - return JSValue::encode(jsUndefined()); - } - - int optionalArg = exec->argument(1).toInt32(exec); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - - imp->withDynamicFrameAndOptionalArg(dynamicFrame, intArg, optionalArg); - return JSValue::encode(jsUndefined()); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithDynamicFrameAndUserGesture(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - Frame* dynamicFrame = toDynamicFrame(exec); - if (!dynamicFrame) - return JSValue::encode(jsUndefined()); - int intArg = exec->argument(0).toInt32(exec); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - - imp->withDynamicFrameAndUserGesture(dynamicFrame, intArg, processingUserGesture()); - return JSValue::encode(jsUndefined()); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithDynamicFrameAndUserGestureASAD(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - Frame* dynamicFrame = toDynamicFrame(exec); - if (!dynamicFrame) - return JSValue::encode(jsUndefined()); - int intArg = exec->argument(0).toInt32(exec); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - - int argsCount = exec->argumentCount(); - if (argsCount <= 1) { - imp->withDynamicFrameAndUserGestureASAD(dynamicFrame, intArg); - return JSValue::encode(jsUndefined()); - } - - int optionalArg = exec->argument(1).toInt32(exec); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - - imp->withDynamicFrameAndUserGestureASAD(dynamicFrame, intArg, optionalArg, processingUserGesture()); - return JSValue::encode(jsUndefined()); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptStateVoid(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - - imp->withScriptStateVoid(exec); - return JSValue::encode(jsUndefined()); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptStateObj(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - - - JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(imp->withScriptStateObj(exec))); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - return JSValue::encode(result); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptStateVoidException(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - ExceptionCode ec = 0; - - imp->withScriptStateVoidException(exec, ec); - setDOMException(exec, ec); - return JSValue::encode(jsUndefined()); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptStateObjException(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - ExceptionCode ec = 0; - - - JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(imp->withScriptStateObjException(exec, ec))); - setDOMException(exec, ec); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - return JSValue::encode(result); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptExecutionContext(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - ScriptExecutionContext* scriptContext = static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject())->scriptExecutionContext(); - if (!scriptContext) - return JSValue::encode(jsUndefined()); - - imp->withScriptExecutionContext(scriptContext); - return JSValue::encode(jsUndefined()); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalArg(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - - int argsCount = exec->argumentCount(); - if (argsCount <= 0) { - imp->methodWithOptionalArg(); - return JSValue::encode(jsUndefined()); - } - - int opt = exec->argument(0).toInt32(exec); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - - imp->methodWithOptionalArg(opt); - return JSValue::encode(jsUndefined()); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndOptionalArg(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - int nonOpt = exec->argument(0).toInt32(exec); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - - int argsCount = exec->argumentCount(); - if (argsCount <= 1) { - imp->methodWithNonOptionalArgAndOptionalArg(nonOpt); - return JSValue::encode(jsUndefined()); - } - - int opt = exec->argument(1).toInt32(exec); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - - imp->methodWithNonOptionalArgAndOptionalArg(nonOpt, opt); - return JSValue::encode(jsUndefined()); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndTwoOptionalArgs(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - int nonOpt = exec->argument(0).toInt32(exec); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - - int argsCount = exec->argumentCount(); - if (argsCount <= 1) { - imp->methodWithNonOptionalArgAndTwoOptionalArgs(nonOpt); - return JSValue::encode(jsUndefined()); - } - - int opt1 = exec->argument(1).toInt32(exec); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - int opt2 = exec->argument(2).toInt32(exec); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - - imp->methodWithNonOptionalArgAndTwoOptionalArgs(nonOpt, opt1, opt2); - return JSValue::encode(jsUndefined()); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithCallbackArg(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - if (exec->argumentCount() <= 0 || !exec->argument(0).isObject()) { - setDOMException(exec, TYPE_MISMATCH_ERR); - return JSValue::encode(jsUndefined()); - } - RefPtr<TestCallback> callback = JSTestCallback::create(asObject(exec->argument(0)), castedThis->globalObject()); - - imp->methodWithCallbackArg(callback); - return JSValue::encode(jsUndefined()); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackArg(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - int nonCallback = exec->argument(0).toInt32(exec); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - if (exec->argumentCount() <= 1 || !exec->argument(1).isObject()) { - setDOMException(exec, TYPE_MISMATCH_ERR); - return JSValue::encode(jsUndefined()); - } - RefPtr<TestCallback> callback = JSTestCallback::create(asObject(exec->argument(1)), castedThis->globalObject()); - - imp->methodWithNonCallbackArgAndCallbackArg(nonCallback, callback); - return JSValue::encode(jsUndefined()); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithCallbackAndOptionalArg(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - RefPtr<TestCallback> callback; - if (exec->argumentCount() > 0 && !exec->argument(0).isNull() && !exec->argument(0).isUndefined()) { - if (!exec->argument(0).isObject()) { - setDOMException(exec, TYPE_MISMATCH_ERR); - return JSValue::encode(jsUndefined()); - } - callback = JSTestCallback::create(asObject(exec->argument(0)), castedThis->globalObject()); - } - - imp->methodWithCallbackAndOptionalArg(callback); - return JSValue::encode(jsUndefined()); -} - -static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod1(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - TestObj* objArg = toTestObj(exec->argument(0)); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - const String& strArg = ustringToString(exec->argument(1).toString(exec)); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - - imp->overloadedMethod(objArg, strArg); - return JSValue::encode(jsUndefined()); -} - -static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod2(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - TestObj* objArg = toTestObj(exec->argument(0)); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - - int argsCount = exec->argumentCount(); - if (argsCount <= 1) { - imp->overloadedMethod(objArg); - return JSValue::encode(jsUndefined()); - } - - int intArg = exec->argument(1).toInt32(exec); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - - imp->overloadedMethod(objArg, intArg); - return JSValue::encode(jsUndefined()); -} - -static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod3(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - const String& strArg = ustringToString(exec->argument(0).toString(exec)); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - - imp->overloadedMethod(strArg); - return JSValue::encode(jsUndefined()); -} - -static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod4(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - int intArg = exec->argument(0).toInt32(exec); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - - imp->overloadedMethod(intArg); - return JSValue::encode(jsUndefined()); -} - -static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod5(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - if (exec->argumentCount() <= 0 || !exec->argument(0).isObject()) { - setDOMException(exec, TYPE_MISMATCH_ERR); - return JSValue::encode(jsUndefined()); - } - RefPtr<TestCallback> callback = JSTestCallback::create(asObject(exec->argument(0)), castedThis->globalObject()); - - imp->overloadedMethod(callback); - return JSValue::encode(jsUndefined()); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod(ExecState* exec) -{ - if ((exec->argumentCount() == 2 && (exec->argument(0).isNull() || (exec->argument(0).isObject() && asObject(exec->argument(0))->inherits(&JSTestObj::s_info))) && (exec->argument(1).isNull() || exec->argument(1).isUndefined() || exec->argument(1).isString() || exec->argument(1).isObject()))) - return jsTestObjPrototypeFunctionOverloadedMethod1(exec); - if ((exec->argumentCount() == 1 && (exec->argument(0).isNull() || (exec->argument(0).isObject() && asObject(exec->argument(0))->inherits(&JSTestObj::s_info)))) || (exec->argumentCount() == 2 && (exec->argument(0).isNull() || (exec->argument(0).isObject() && asObject(exec->argument(0))->inherits(&JSTestObj::s_info))))) - return jsTestObjPrototypeFunctionOverloadedMethod2(exec); - if ((exec->argumentCount() == 1 && (exec->argument(0).isNull() || exec->argument(0).isUndefined() || exec->argument(0).isString() || exec->argument(0).isObject()))) - return jsTestObjPrototypeFunctionOverloadedMethod3(exec); - if (exec->argumentCount() == 1) - return jsTestObjPrototypeFunctionOverloadedMethod4(exec); - if ((exec->argumentCount() == 1 && (exec->argument(0).isNull() || exec->argument(0).isObject()))) - return jsTestObjPrototypeFunctionOverloadedMethod5(exec); - return throwVMTypeError(exec); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionClassMethod(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - - imp->classMethod(); - return JSValue::encode(jsUndefined()); -} - -EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionClassMethodWithOptional(ExecState* exec) -{ - JSValue thisValue = exec->hostThisValue(); - if (!thisValue.inherits(&JSTestObj::s_info)) - return throwVMTypeError(exec); - JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue)); - TestObj* imp = static_cast<TestObj*>(castedThis->impl()); - - int argsCount = exec->argumentCount(); - if (argsCount <= 0) { - - JSC::JSValue result = jsNumber(imp->classMethodWithOptional()); - return JSValue::encode(result); - } - - int arg = exec->argument(0).toInt32(exec); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - - - JSC::JSValue result = jsNumber(imp->classMethodWithOptional(arg)); - return JSValue::encode(result); -} - -// Constant getters - -JSValue jsTestObjCONST_VALUE_0(ExecState* exec, JSValue, const Identifier&) -{ - UNUSED_PARAM(exec); - return jsNumber(static_cast<int>(0)); -} - -JSValue jsTestObjCONST_VALUE_1(ExecState* exec, JSValue, const Identifier&) -{ - UNUSED_PARAM(exec); - return jsNumber(static_cast<int>(1)); -} - -JSValue jsTestObjCONST_VALUE_2(ExecState* exec, JSValue, const Identifier&) -{ - UNUSED_PARAM(exec); - return jsNumber(static_cast<int>(2)); -} - -JSValue jsTestObjCONST_VALUE_4(ExecState* exec, JSValue, const Identifier&) -{ - UNUSED_PARAM(exec); - return jsNumber(static_cast<int>(4)); -} - -JSValue jsTestObjCONST_VALUE_8(ExecState* exec, JSValue, const Identifier&) -{ - UNUSED_PARAM(exec); - return jsNumber(static_cast<int>(8)); -} - -JSValue jsTestObjCONST_VALUE_9(ExecState* exec, JSValue, const Identifier&) -{ - UNUSED_PARAM(exec); - return jsNumber(static_cast<int>(-1)); -} - -JSValue jsTestObjCONST_VALUE_10(ExecState* exec, JSValue, const Identifier&) -{ - return jsStringOrNull(exec, String("my constant string")); -} - -JSValue jsTestObjCONST_VALUE_11(ExecState* exec, JSValue, const Identifier&) -{ - UNUSED_PARAM(exec); - return jsNumber(static_cast<int>(0xffffffff)); -} - -JSValue jsTestObjCONST_VALUE_12(ExecState* exec, JSValue, const Identifier&) -{ - UNUSED_PARAM(exec); - return jsNumber(static_cast<int>(0x01)); -} - -JSValue jsTestObjCONST_VALUE_13(ExecState* exec, JSValue, const Identifier&) -{ - UNUSED_PARAM(exec); - return jsNumber(static_cast<int>(0X20)); -} - -JSValue jsTestObjCONST_VALUE_14(ExecState* exec, JSValue, const Identifier&) -{ - UNUSED_PARAM(exec); - return jsNumber(static_cast<int>(0x1abc)); -} - -JSC::JSValue toJS(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, TestObj* object) -{ - return getDOMObjectWrapper<JSTestObj>(exec, globalObject, object); -} -TestObj* toTestObj(JSC::JSValue value) -{ - return value.inherits(&JSTestObj::s_info) ? static_cast<JSTestObj*>(asObject(value))->impl() : 0; -} - -} diff --git a/WebCore/bindings/scripts/test/JS/JSTestObj.h b/WebCore/bindings/scripts/test/JS/JSTestObj.h deleted file mode 100644 index b8713ae..0000000 --- a/WebCore/bindings/scripts/test/JS/JSTestObj.h +++ /dev/null @@ -1,208 +0,0 @@ -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef JSTestObj_h -#define JSTestObj_h - -#include "JSDOMBinding.h" -#include <runtime/JSGlobalObject.h> -#include <runtime/JSObjectWithGlobalObject.h> -#include <runtime/ObjectPrototype.h> - -namespace WebCore { - -class TestObj; - -class JSTestObj : public DOMObjectWithGlobalPointer { - typedef DOMObjectWithGlobalPointer Base; -public: - JSTestObj(NonNullPassRefPtr<JSC::Structure>, JSDOMGlobalObject*, PassRefPtr<TestObj>); - virtual ~JSTestObj(); - static JSC::JSObject* createPrototype(JSC::ExecState*, JSC::JSGlobalObject*); - virtual bool getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::PropertySlot&); - virtual bool getOwnPropertyDescriptor(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::PropertyDescriptor&); - virtual void put(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSValue, JSC::PutPropertySlot&); - virtual const JSC::ClassInfo* classInfo() const { return &s_info; } - static const JSC::ClassInfo s_info; - - static PassRefPtr<JSC::Structure> createStructure(JSC::JSValue prototype) - { - return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount); - } - - static JSC::JSValue getConstructor(JSC::ExecState*, JSC::JSGlobalObject*); - - // Custom attributes - JSC::JSValue customAttr(JSC::ExecState*) const; - void setCustomAttr(JSC::ExecState*, JSC::JSValue); - - // Custom functions - JSC::JSValue customMethod(JSC::ExecState*); - JSC::JSValue customMethodWithArgs(JSC::ExecState*); - TestObj* impl() const { return m_impl.get(); } - -private: - RefPtr<TestObj> m_impl; -protected: - static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | Base::StructureFlags; -}; - -JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, TestObj*); -TestObj* toTestObj(JSC::JSValue); - -class JSTestObjPrototype : public JSC::JSObjectWithGlobalObject { - typedef JSC::JSObjectWithGlobalObject Base; -public: - static JSC::JSObject* self(JSC::ExecState*, JSC::JSGlobalObject*); - virtual const JSC::ClassInfo* classInfo() const { return &s_info; } - static const JSC::ClassInfo s_info; - virtual bool getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier&, JSC::PropertySlot&); - virtual bool getOwnPropertyDescriptor(JSC::ExecState*, const JSC::Identifier&, JSC::PropertyDescriptor&); - static PassRefPtr<JSC::Structure> createStructure(JSC::JSValue prototype) - { - return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount); - } - JSTestObjPrototype(JSC::JSGlobalObject* globalObject, NonNullPassRefPtr<JSC::Structure> structure) : JSC::JSObjectWithGlobalObject(globalObject, structure) { } -protected: - static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | Base::StructureFlags; -}; - -// Functions - -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionVoidMethod(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionVoidMethodWithArgs(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionIntMethod(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionIntMethodWithArgs(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionObjMethod(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionObjMethodWithArgs(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodThatRequiresAllArgs(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodThatRequiresAllArgsAndThrows(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionSerializedValue(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionIdbKey(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOptionsObject(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithException(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionCustomMethod(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionCustomMethodWithArgs(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionCustomArgsAndException(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionAddEventListener(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionRemoveEventListener(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithDynamicFrame(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithDynamicFrameAndArg(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithDynamicFrameAndOptionalArg(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithDynamicFrameAndUserGesture(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithDynamicFrameAndUserGestureASAD(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptStateVoid(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptStateObj(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptStateVoidException(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptStateObjException(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptExecutionContext(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalArg(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndOptionalArg(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndTwoOptionalArgs(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithCallbackArg(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackArg(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithCallbackAndOptionalArg(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionClassMethod(JSC::ExecState*); -JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionClassMethodWithOptional(JSC::ExecState*); -// Attributes - -JSC::JSValue jsTestObjReadOnlyIntAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -JSC::JSValue jsTestObjReadOnlyStringAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -JSC::JSValue jsTestObjReadOnlyTestObjAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -JSC::JSValue jsTestObjShortAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -void setJSTestObjShortAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); -JSC::JSValue jsTestObjUnsignedShortAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -void setJSTestObjUnsignedShortAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); -JSC::JSValue jsTestObjIntAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -void setJSTestObjIntAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); -JSC::JSValue jsTestObjLongLongAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -void setJSTestObjLongLongAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); -JSC::JSValue jsTestObjUnsignedLongLongAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -void setJSTestObjUnsignedLongLongAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); -JSC::JSValue jsTestObjStringAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -void setJSTestObjStringAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); -JSC::JSValue jsTestObjTestObjAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -void setJSTestObjTestObjAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); -JSC::JSValue jsTestObjXMLObjAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -void setJSTestObjXMLObjAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); -JSC::JSValue jsTestObjCreate(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -void setJSTestObjCreate(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); -JSC::JSValue jsTestObjReflectedStringAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -void setJSTestObjReflectedStringAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); -JSC::JSValue jsTestObjReflectedIntegralAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -void setJSTestObjReflectedIntegralAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); -JSC::JSValue jsTestObjReflectedUnsignedIntegralAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -void setJSTestObjReflectedUnsignedIntegralAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); -JSC::JSValue jsTestObjReflectedBooleanAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -void setJSTestObjReflectedBooleanAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); -JSC::JSValue jsTestObjReflectedURLAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -void setJSTestObjReflectedURLAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); -JSC::JSValue jsTestObjReflectedNonEmptyURLAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -void setJSTestObjReflectedNonEmptyURLAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); -JSC::JSValue jsTestObjReflectedStringAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -void setJSTestObjReflectedStringAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); -JSC::JSValue jsTestObjReflectedCustomIntegralAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -void setJSTestObjReflectedCustomIntegralAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); -JSC::JSValue jsTestObjReflectedCustomBooleanAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -void setJSTestObjReflectedCustomBooleanAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); -JSC::JSValue jsTestObjReflectedCustomURLAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -void setJSTestObjReflectedCustomURLAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); -JSC::JSValue jsTestObjReflectedCustomNonEmptyURLAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -void setJSTestObjReflectedCustomNonEmptyURLAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); -JSC::JSValue jsTestObjAttrWithGetterException(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -void setJSTestObjAttrWithGetterException(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); -JSC::JSValue jsTestObjAttrWithSetterException(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -void setJSTestObjAttrWithSetterException(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); -JSC::JSValue jsTestObjStringAttrWithGetterException(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -void setJSTestObjStringAttrWithGetterException(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); -JSC::JSValue jsTestObjStringAttrWithSetterException(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -void setJSTestObjStringAttrWithSetterException(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); -JSC::JSValue jsTestObjCustomAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -void setJSTestObjCustomAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); -JSC::JSValue jsTestObjScriptStringAttr(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -JSC::JSValue jsTestObjConditionalAttr1(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -void setJSTestObjConditionalAttr1(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); -JSC::JSValue jsTestObjConditionalAttr2(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -void setJSTestObjConditionalAttr2(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); -JSC::JSValue jsTestObjConditionalAttr3(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -void setJSTestObjConditionalAttr3(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); -JSC::JSValue jsTestObjDescription(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -JSC::JSValue jsTestObjId(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -void setJSTestObjId(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); -JSC::JSValue jsTestObjHash(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -JSC::JSValue jsTestObjConstructor(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -// Constants - -JSC::JSValue jsTestObjCONST_VALUE_0(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -JSC::JSValue jsTestObjCONST_VALUE_1(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -JSC::JSValue jsTestObjCONST_VALUE_2(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -JSC::JSValue jsTestObjCONST_VALUE_4(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -JSC::JSValue jsTestObjCONST_VALUE_8(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -JSC::JSValue jsTestObjCONST_VALUE_9(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -JSC::JSValue jsTestObjCONST_VALUE_10(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -JSC::JSValue jsTestObjCONST_VALUE_11(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -JSC::JSValue jsTestObjCONST_VALUE_12(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -JSC::JSValue jsTestObjCONST_VALUE_13(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -JSC::JSValue jsTestObjCONST_VALUE_14(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); - -} // namespace WebCore - -#endif diff --git a/WebCore/bindings/scripts/test/ObjC/DOMTestCallback.h b/WebCore/bindings/scripts/test/ObjC/DOMTestCallback.h deleted file mode 100644 index 1213c6f..0000000 --- a/WebCore/bindings/scripts/test/ObjC/DOMTestCallback.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. - * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com> - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#import <WebCore/DOMObject.h> - -#if WEBKIT_VERSION_MAX_ALLOWED >= WEBKIT_VERSION_LATEST - -@class DOMClass1; -@class DOMClass2; -@class DOMClass3; -@class DOMClass5; -@class DOMClass6; -@class NSString; - -@interface DOMTestCallback : DOMObject -- (BOOL)callbackWithClass1Param:(DOMClass1 *)class1Param; -- (BOOL)callbackWithClass2Param:(DOMClass2 *)class2Param strArg:(NSString *)strArg; -- (int)callbackWithNonBoolReturnType:(DOMClass3 *)class3Param; -- (int)customCallback:(DOMClass5 *)class5Param class6Param:(DOMClass6 *)class6Param; -@end - -#endif diff --git a/WebCore/bindings/scripts/test/ObjC/DOMTestCallback.mm b/WebCore/bindings/scripts/test/ObjC/DOMTestCallback.mm deleted file mode 100644 index e941eda..0000000 --- a/WebCore/bindings/scripts/test/ObjC/DOMTestCallback.mm +++ /dev/null @@ -1,127 +0,0 @@ -/* - * This file is part of the WebKit open source project. - * This file has been generated by generate-bindings.pl. DO NOT MODIFY! - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#import "config.h" - -#if ENABLE(DATABASE) - -#import "DOMInternal.h" - -#import "DOMTestCallback.h" - -#import "Class1.h" -#import "Class2.h" -#import "Class3.h" -#import "Class5.h" -#import "Class6.h" -#import "DOMBlobInternal.h" -#import "DOMCSSRuleInternal.h" -#import "DOMCSSValueInternal.h" -#import "DOMClass1Internal.h" -#import "DOMClass2Internal.h" -#import "DOMClass3Internal.h" -#import "DOMClass5Internal.h" -#import "DOMClass6Internal.h" -#import "DOMEventInternal.h" -#import "DOMNodeInternal.h" -#import "DOMStyleSheetInternal.h" -#import "DOMTestCallbackInternal.h" -#import "ExceptionHandlers.h" -#import "JSMainThreadExecState.h" -#import "KURL.h" -#import "TestCallback.h" -#import "ThreadCheck.h" -#import "WebCoreObjCExtras.h" -#import "WebScriptObjectPrivate.h" -#import <wtf/GetPtr.h> - -#define IMPL reinterpret_cast<WebCore::TestCallback*>(_internal) - -@implementation DOMTestCallback - -- (void)dealloc -{ - if (WebCoreObjCScheduleDeallocateOnMainThread([DOMTestCallback class], self)) - return; - - if (_internal) - IMPL->deref(); - [super dealloc]; -} - -- (void)finalize -{ - if (_internal) - IMPL->deref(); - [super finalize]; -} - -- (BOOL)callbackWithClass1Param:(DOMClass1 *)class1Param -{ - WebCore::JSMainThreadNullState state; - return IMPL->callbackWithClass1Param(core(class1Param)); -} - -- (BOOL)callbackWithClass2Param:(DOMClass2 *)class2Param strArg:(NSString *)strArg -{ - WebCore::JSMainThreadNullState state; - return IMPL->callbackWithClass2Param(core(class2Param), strArg); -} - -- (int)callbackWithNonBoolReturnType:(DOMClass3 *)class3Param -{ - WebCore::JSMainThreadNullState state; - return IMPL->callbackWithNonBoolReturnType(core(class3Param)); -} - -- (int)customCallback:(DOMClass5 *)class5Param class6Param:(DOMClass6 *)class6Param -{ - WebCore::JSMainThreadNullState state; - return IMPL->customCallback(core(class5Param), core(class6Param)); -} - -@end - -WebCore::TestCallback* core(DOMTestCallback *wrapper) -{ - return wrapper ? reinterpret_cast<WebCore::TestCallback*>(wrapper->_internal) : 0; -} - -DOMTestCallback *kit(WebCore::TestCallback* value) -{ - { DOM_ASSERT_MAIN_THREAD(); WebCoreThreadViolationCheckRoundOne(); }; - if (!value) - return nil; - if (DOMTestCallback *wrapper = getDOMWrapper(value)) - return [[wrapper retain] autorelease]; - DOMTestCallback *wrapper = [[DOMTestCallback alloc] _init]; - wrapper->_internal = reinterpret_cast<DOMObjectInternal*>(value); - value->ref(); - addDOMWrapper(wrapper, value); - return [wrapper autorelease]; -} - -#endif // ENABLE(DATABASE) diff --git a/WebCore/bindings/scripts/test/ObjC/DOMTestCallbackInternal.h b/WebCore/bindings/scripts/test/ObjC/DOMTestCallbackInternal.h deleted file mode 100644 index d8ea940..0000000 --- a/WebCore/bindings/scripts/test/ObjC/DOMTestCallbackInternal.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * This file is part of the WebKit open source project. - * This file has been generated by generate-bindings.pl. DO NOT MODIFY! - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#import <WebCore/DOMTestCallback.h> - -#if WEBKIT_VERSION_MAX_ALLOWED >= WEBKIT_VERSION_LATEST - -namespace WebCore { - class TestCallback; -} - -WebCore::TestCallback* core(DOMTestCallback *); -DOMTestCallback *kit(WebCore::TestCallback*); - -#endif diff --git a/WebCore/bindings/scripts/test/ObjC/DOMTestInterface.h b/WebCore/bindings/scripts/test/ObjC/DOMTestInterface.h deleted file mode 100644 index db7be28..0000000 --- a/WebCore/bindings/scripts/test/ObjC/DOMTestInterface.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. - * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com> - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#import <WebCore/DOMObject.h> - -#if WEBKIT_VERSION_MAX_ALLOWED >= WEBKIT_VERSION_LATEST - -@interface DOMTestInterface : DOMObject -@end - -#endif diff --git a/WebCore/bindings/scripts/test/ObjC/DOMTestInterface.mm b/WebCore/bindings/scripts/test/ObjC/DOMTestInterface.mm deleted file mode 100644 index ab59333..0000000 --- a/WebCore/bindings/scripts/test/ObjC/DOMTestInterface.mm +++ /dev/null @@ -1,92 +0,0 @@ -/* - * This file is part of the WebKit open source project. - * This file has been generated by generate-bindings.pl. DO NOT MODIFY! - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#import "config.h" - -#if ENABLE(Condition1) || ENABLE(Condition2) - -#import "DOMInternal.h" - -#import "DOMTestInterface.h" - -#import "DOMBlobInternal.h" -#import "DOMCSSRuleInternal.h" -#import "DOMCSSValueInternal.h" -#import "DOMEventInternal.h" -#import "DOMNodeInternal.h" -#import "DOMStyleSheetInternal.h" -#import "DOMTestInterfaceInternal.h" -#import "ExceptionHandlers.h" -#import "JSMainThreadExecState.h" -#import "TestInterface.h" -#import "ThreadCheck.h" -#import "WebCoreObjCExtras.h" -#import "WebScriptObjectPrivate.h" -#import <wtf/GetPtr.h> - -#define IMPL reinterpret_cast<WebCore::TestInterface*>(_internal) - -@implementation DOMTestInterface - -- (void)dealloc -{ - if (WebCoreObjCScheduleDeallocateOnMainThread([DOMTestInterface class], self)) - return; - - if (_internal) - IMPL->deref(); - [super dealloc]; -} - -- (void)finalize -{ - if (_internal) - IMPL->deref(); - [super finalize]; -} - -@end - -WebCore::TestInterface* core(DOMTestInterface *wrapper) -{ - return wrapper ? reinterpret_cast<WebCore::TestInterface*>(wrapper->_internal) : 0; -} - -DOMTestInterface *kit(WebCore::TestInterface* value) -{ - { DOM_ASSERT_MAIN_THREAD(); WebCoreThreadViolationCheckRoundOne(); }; - if (!value) - return nil; - if (DOMTestInterface *wrapper = getDOMWrapper(value)) - return [[wrapper retain] autorelease]; - DOMTestInterface *wrapper = [[DOMTestInterface alloc] _init]; - wrapper->_internal = reinterpret_cast<DOMObjectInternal*>(value); - value->ref(); - addDOMWrapper(wrapper, value); - return [wrapper autorelease]; -} - -#endif // ENABLE(Condition1) || ENABLE(Condition2) diff --git a/WebCore/bindings/scripts/test/ObjC/DOMTestInterfaceInternal.h b/WebCore/bindings/scripts/test/ObjC/DOMTestInterfaceInternal.h deleted file mode 100644 index fef60a3..0000000 --- a/WebCore/bindings/scripts/test/ObjC/DOMTestInterfaceInternal.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * This file is part of the WebKit open source project. - * This file has been generated by generate-bindings.pl. DO NOT MODIFY! - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#import <WebCore/DOMTestInterface.h> - -#if WEBKIT_VERSION_MAX_ALLOWED >= WEBKIT_VERSION_LATEST - -namespace WebCore { - class TestInterface; -} - -WebCore::TestInterface* core(DOMTestInterface *); -DOMTestInterface *kit(WebCore::TestInterface*); - -#endif diff --git a/WebCore/bindings/scripts/test/ObjC/DOMTestMediaQueryListListener.h b/WebCore/bindings/scripts/test/ObjC/DOMTestMediaQueryListListener.h deleted file mode 100644 index 20be806..0000000 --- a/WebCore/bindings/scripts/test/ObjC/DOMTestMediaQueryListListener.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. - * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com> - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#import <WebCore/DOMObject.h> - -#if WEBKIT_VERSION_MAX_ALLOWED >= WEBKIT_VERSION_LATEST - -@class DOMMediaQueryListListener; - -@interface DOMTestMediaQueryListListener : DOMObject -- (void)method:(DOMMediaQueryListListener *)listener; -@end - -#endif diff --git a/WebCore/bindings/scripts/test/ObjC/DOMTestMediaQueryListListener.mm b/WebCore/bindings/scripts/test/ObjC/DOMTestMediaQueryListListener.mm deleted file mode 100644 index 74e3d52..0000000 --- a/WebCore/bindings/scripts/test/ObjC/DOMTestMediaQueryListListener.mm +++ /dev/null @@ -1,95 +0,0 @@ -/* - * This file is part of the WebKit open source project. - * This file has been generated by generate-bindings.pl. DO NOT MODIFY! - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#import "config.h" -#import "DOMInternal.h" - -#import "DOMTestMediaQueryListListener.h" - -#import "DOMBlobInternal.h" -#import "DOMCSSRuleInternal.h" -#import "DOMCSSValueInternal.h" -#import "DOMEventInternal.h" -#import "DOMMediaQueryListListenerInternal.h" -#import "DOMNodeInternal.h" -#import "DOMStyleSheetInternal.h" -#import "DOMTestMediaQueryListListenerInternal.h" -#import "ExceptionHandlers.h" -#import "JSMainThreadExecState.h" -#import "MediaQueryListListener.h" -#import "TestMediaQueryListListener.h" -#import "ThreadCheck.h" -#import "WebCoreObjCExtras.h" -#import "WebScriptObjectPrivate.h" -#import <wtf/GetPtr.h> - -#define IMPL reinterpret_cast<WebCore::TestMediaQueryListListener*>(_internal) - -@implementation DOMTestMediaQueryListListener - -- (void)dealloc -{ - if (WebCoreObjCScheduleDeallocateOnMainThread([DOMTestMediaQueryListListener class], self)) - return; - - if (_internal) - IMPL->deref(); - [super dealloc]; -} - -- (void)finalize -{ - if (_internal) - IMPL->deref(); - [super finalize]; -} - -- (void)method:(DOMMediaQueryListListener *)listener -{ - WebCore::JSMainThreadNullState state; - IMPL->method(core(listener)); -} - -@end - -WebCore::TestMediaQueryListListener* core(DOMTestMediaQueryListListener *wrapper) -{ - return wrapper ? reinterpret_cast<WebCore::TestMediaQueryListListener*>(wrapper->_internal) : 0; -} - -DOMTestMediaQueryListListener *kit(WebCore::TestMediaQueryListListener* value) -{ - { DOM_ASSERT_MAIN_THREAD(); WebCoreThreadViolationCheckRoundOne(); }; - if (!value) - return nil; - if (DOMTestMediaQueryListListener *wrapper = getDOMWrapper(value)) - return [[wrapper retain] autorelease]; - DOMTestMediaQueryListListener *wrapper = [[DOMTestMediaQueryListListener alloc] _init]; - wrapper->_internal = reinterpret_cast<DOMObjectInternal*>(value); - value->ref(); - addDOMWrapper(wrapper, value); - return [wrapper autorelease]; -} diff --git a/WebCore/bindings/scripts/test/ObjC/DOMTestMediaQueryListListenerInternal.h b/WebCore/bindings/scripts/test/ObjC/DOMTestMediaQueryListListenerInternal.h deleted file mode 100644 index b1421a3..0000000 --- a/WebCore/bindings/scripts/test/ObjC/DOMTestMediaQueryListListenerInternal.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * This file is part of the WebKit open source project. - * This file has been generated by generate-bindings.pl. DO NOT MODIFY! - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#import <WebCore/DOMTestMediaQueryListListener.h> - -#if WEBKIT_VERSION_MAX_ALLOWED >= WEBKIT_VERSION_LATEST - -namespace WebCore { - class TestMediaQueryListListener; -} - -WebCore::TestMediaQueryListListener* core(DOMTestMediaQueryListListener *); -DOMTestMediaQueryListListener *kit(WebCore::TestMediaQueryListListener*); - -#endif diff --git a/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h b/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h deleted file mode 100644 index c6ab368..0000000 --- a/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. - * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com> - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#import <WebCore/DOMObject.h> - -#if WEBKIT_VERSION_MAX_ALLOWED >= WEBKIT_VERSION_LATEST - -@class DOMIDBKey; -@class DOMOptionsObject; -@class DOMTestObj; -@class DOMlog; -@class NSString; -@protocol DOMEventListener; - -enum { - DOM_CONST_VALUE_0 = 0, - DOM_CONST_VALUE_1 = 1, - DOM_CONST_VALUE_2 = 2, - DOM_CONST_VALUE_4 = 4, - DOM_CONST_VALUE_8 = 8, - DOM_CONST_VALUE_9 = -1, - DOM_CONST_VALUE_10 = "my constant string", - DOM_CONST_VALUE_11 = 0xffffffff, - DOM_CONST_VALUE_12 = 0x01, - DOM_CONST_VALUE_13 = 0X20, - DOM_CONST_VALUE_14 = 0x1abc -}; - -@interface DOMTestObj : DOMObject -- (int)readOnlyIntAttr; -- (NSString *)readOnlyStringAttr; -- (DOMTestObj *)readOnlyTestObjAttr; -- (short)shortAttr; -- (void)setShortAttr:(short)newShortAttr; -- (unsigned short)unsignedShortAttr; -- (void)setUnsignedShortAttr:(unsigned short)newUnsignedShortAttr; -- (int)intAttr; -- (void)setIntAttr:(int)newIntAttr; -- (long long)longLongAttr; -- (void)setLongLongAttr:(long long)newLongLongAttr; -- (unsigned long long)unsignedLongLongAttr; -- (void)setUnsignedLongLongAttr:(unsigned long long)newUnsignedLongLongAttr; -- (NSString *)stringAttr; -- (void)setStringAttr:(NSString *)newStringAttr; -- (DOMTestObj *)testObjAttr; -- (void)setTestObjAttr:(DOMTestObj *)newTestObjAttr; -- (DOMTestObj *)XMLObjAttr; -- (void)setXMLObjAttr:(DOMTestObj *)newXMLObjAttr; -- (BOOL)create; -- (void)setCreate:(BOOL)newCreate; -- (NSString *)reflectedStringAttr; -- (void)setReflectedStringAttr:(NSString *)newReflectedStringAttr; -- (int)reflectedIntegralAttr; -- (void)setReflectedIntegralAttr:(int)newReflectedIntegralAttr; -- (unsigned)reflectedUnsignedIntegralAttr; -- (void)setReflectedUnsignedIntegralAttr:(unsigned)newReflectedUnsignedIntegralAttr; -- (BOOL)reflectedBooleanAttr; -- (void)setReflectedBooleanAttr:(BOOL)newReflectedBooleanAttr; -- (NSString *)reflectedURLAttr; -- (void)setReflectedURLAttr:(NSString *)newReflectedURLAttr; -- (NSString *)reflectedNonEmptyURLAttr; -- (void)setReflectedNonEmptyURLAttr:(NSString *)newReflectedNonEmptyURLAttr; -- (NSString *)reflectedStringAttr; -- (void)setReflectedStringAttr:(NSString *)newReflectedStringAttr; -- (int)reflectedCustomIntegralAttr; -- (void)setReflectedCustomIntegralAttr:(int)newReflectedCustomIntegralAttr; -- (BOOL)reflectedCustomBooleanAttr; -- (void)setReflectedCustomBooleanAttr:(BOOL)newReflectedCustomBooleanAttr; -- (NSString *)reflectedCustomURLAttr; -- (void)setReflectedCustomURLAttr:(NSString *)newReflectedCustomURLAttr; -- (NSString *)reflectedCustomNonEmptyURLAttr; -- (void)setReflectedCustomNonEmptyURLAttr:(NSString *)newReflectedCustomNonEmptyURLAttr; -- (int)attrWithGetterException; -- (void)setAttrWithGetterException:(int)newAttrWithGetterException; -- (int)attrWithSetterException; -- (void)setAttrWithSetterException:(int)newAttrWithSetterException; -- (NSString *)stringAttrWithGetterException; -- (void)setStringAttrWithGetterException:(NSString *)newStringAttrWithGetterException; -- (NSString *)stringAttrWithSetterException; -- (void)setStringAttrWithSetterException:(NSString *)newStringAttrWithSetterException; -- (int)customAttr; -- (void)setCustomAttr:(int)newCustomAttr; -- (NSString *)scriptStringAttr; -#if ENABLE(Condition1) -- (int)conditionalAttr1; -- (void)setConditionalAttr1:(int)newConditionalAttr1; -#endif -#if ENABLE(Condition1) && ENABLE(Condition2) -- (int)conditionalAttr2; -- (void)setConditionalAttr2:(int)newConditionalAttr2; -#endif -#if ENABLE(Condition1) || ENABLE(Condition2) -- (int)conditionalAttr3; -- (void)setConditionalAttr3:(int)newConditionalAttr3; -#endif -- (int)descriptionName; -- (int)idName; -- (void)setIdName:(int)newIdName; -- (NSString *)hashName; -- (void)voidMethod; -- (void)voidMethodWithArgs:(int)intArg strArg:(NSString *)strArg objArg:(DOMTestObj *)objArg; -- (int)intMethod; -- (int)intMethodWithArgs:(int)intArg strArg:(NSString *)strArg objArg:(DOMTestObj *)objArg; -- (DOMTestObj *)objMethod; -- (DOMTestObj *)objMethodWithArgs:(int)intArg strArg:(NSString *)strArg objArg:(DOMTestObj *)objArg; -- (DOMTestObj *)methodThatRequiresAllArgs:(NSString *)strArg objArg:(DOMTestObj *)objArg; -- (DOMTestObj *)methodThatRequiresAllArgsAndThrows:(NSString *)strArg objArg:(DOMTestObj *)objArg; -- (void)serializedValue:(NSString *)serializedArg; -- (void)idbKey:(DOMIDBKey *)key; -- (void)optionsObject:(DOMOptionsObject *)oo ooo:(DOMOptionsObject *)ooo; -- (void)methodWithException; -- (void)customMethod; -- (void)customMethodWithArgs:(int)intArg strArg:(NSString *)strArg objArg:(DOMTestObj *)objArg; -- (void)customArgsAndException:(DOMlog *)intArg; -- (void)addEventListener:(NSString *)type listener:(id <DOMEventListener>)listener useCapture:(BOOL)useCapture; -- (void)removeEventListener:(NSString *)type listener:(id <DOMEventListener>)listener useCapture:(BOOL)useCapture; -- (void)withDynamicFrame; -- (void)withDynamicFrameAndArg:(int)intArg; -- (void)withDynamicFrameAndOptionalArg:(int)intArg optionalArg:(int)optionalArg; -- (void)withDynamicFrameAndUserGesture:(int)intArg; -- (void)withDynamicFrameAndUserGestureASAD:(int)intArg optionalArg:(int)optionalArg; -- (void)withScriptStateVoid; -- (DOMTestObj *)withScriptStateObj; -- (void)withScriptStateVoidException; -- (DOMTestObj *)withScriptStateObjException; -- (void)withScriptExecutionContext; -- (void)methodWithOptionalArg:(int)opt; -- (void)methodWithNonOptionalArgAndOptionalArg:(int)nonOpt opt:(int)opt; -- (void)methodWithNonOptionalArgAndTwoOptionalArgs:(int)nonOpt opt1:(int)opt1 opt2:(int)opt2; -- (void)classMethod; -- (int)classMethodWithOptional:(int)arg; -@end - -#endif diff --git a/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm b/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm deleted file mode 100644 index f43f58a..0000000 --- a/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm +++ /dev/null @@ -1,712 +0,0 @@ -/* - * This file is part of the WebKit open source project. - * This file has been generated by generate-bindings.pl. DO NOT MODIFY! - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#import "config.h" -#import "DOMInternal.h" - -#import "DOMTestObj.h" - -#import "DOMBlobInternal.h" -#import "DOMCSSRuleInternal.h" -#import "DOMCSSValueInternal.h" -#import "DOMEventInternal.h" -#import "DOMIDBKeyInternal.h" -#import "DOMNodeInternal.h" -#import "DOMOptionsObjectInternal.h" -#import "DOMStyleSheetInternal.h" -#import "DOMTestObjInternal.h" -#import "DOMlogInternal.h" -#import "EventListener.h" -#import "ExceptionHandlers.h" -#import "HTMLNames.h" -#import "IDBKey.h" -#import "JSMainThreadExecState.h" -#import "KURL.h" -#import "ObjCEventListener.h" -#import "OptionsObject.h" -#import "SerializedScriptValue.h" -#import "TestObj.h" -#import "ThreadCheck.h" -#import "WebCoreObjCExtras.h" -#import "WebScriptObjectPrivate.h" -#import "log.h" -#import <wtf/GetPtr.h> - -#define IMPL reinterpret_cast<WebCore::TestObj*>(_internal) - -@implementation DOMTestObj - -- (void)dealloc -{ - if (WebCoreObjCScheduleDeallocateOnMainThread([DOMTestObj class], self)) - return; - - if (_internal) - IMPL->deref(); - [super dealloc]; -} - -- (void)finalize -{ - if (_internal) - IMPL->deref(); - [super finalize]; -} - -- (int)readOnlyIntAttr -{ - WebCore::JSMainThreadNullState state; - return IMPL->readOnlyIntAttr(); -} - -- (NSString *)readOnlyStringAttr -{ - WebCore::JSMainThreadNullState state; - return IMPL->readOnlyStringAttr(); -} - -- (DOMTestObj *)readOnlyTestObjAttr -{ - WebCore::JSMainThreadNullState state; - return kit(WTF::getPtr(IMPL->readOnlyTestObjAttr())); -} - -- (short)shortAttr -{ - WebCore::JSMainThreadNullState state; - return IMPL->shortAttr(); -} - -- (void)setShortAttr:(short)newShortAttr -{ - WebCore::JSMainThreadNullState state; - IMPL->setShortAttr(newShortAttr); -} - -- (unsigned short)unsignedShortAttr -{ - WebCore::JSMainThreadNullState state; - return IMPL->unsignedShortAttr(); -} - -- (void)setUnsignedShortAttr:(unsigned short)newUnsignedShortAttr -{ - WebCore::JSMainThreadNullState state; - IMPL->setUnsignedShortAttr(newUnsignedShortAttr); -} - -- (int)intAttr -{ - WebCore::JSMainThreadNullState state; - return IMPL->intAttr(); -} - -- (void)setIntAttr:(int)newIntAttr -{ - WebCore::JSMainThreadNullState state; - IMPL->setIntAttr(newIntAttr); -} - -- (long long)longLongAttr -{ - WebCore::JSMainThreadNullState state; - return IMPL->longLongAttr(); -} - -- (void)setLongLongAttr:(long long)newLongLongAttr -{ - WebCore::JSMainThreadNullState state; - IMPL->setLongLongAttr(newLongLongAttr); -} - -- (unsigned long long)unsignedLongLongAttr -{ - WebCore::JSMainThreadNullState state; - return IMPL->unsignedLongLongAttr(); -} - -- (void)setUnsignedLongLongAttr:(unsigned long long)newUnsignedLongLongAttr -{ - WebCore::JSMainThreadNullState state; - IMPL->setUnsignedLongLongAttr(newUnsignedLongLongAttr); -} - -- (NSString *)stringAttr -{ - WebCore::JSMainThreadNullState state; - return IMPL->stringAttr(); -} - -- (void)setStringAttr:(NSString *)newStringAttr -{ - WebCore::JSMainThreadNullState state; - IMPL->setStringAttr(newStringAttr); -} - -- (DOMTestObj *)testObjAttr -{ - WebCore::JSMainThreadNullState state; - return kit(WTF::getPtr(IMPL->testObjAttr())); -} - -- (void)setTestObjAttr:(DOMTestObj *)newTestObjAttr -{ - WebCore::JSMainThreadNullState state; - ASSERT(newTestObjAttr); - - IMPL->setTestObjAttr(core(newTestObjAttr)); -} - -- (DOMTestObj *)XMLObjAttr -{ - WebCore::JSMainThreadNullState state; - return kit(WTF::getPtr(IMPL->xmlObjAttr())); -} - -- (void)setXMLObjAttr:(DOMTestObj *)newXMLObjAttr -{ - WebCore::JSMainThreadNullState state; - ASSERT(newXMLObjAttr); - - IMPL->setXMLObjAttr(core(newXMLObjAttr)); -} - -- (BOOL)create -{ - WebCore::JSMainThreadNullState state; - return IMPL->isCreate(); -} - -- (void)setCreate:(BOOL)newCreate -{ - WebCore::JSMainThreadNullState state; - IMPL->setCreate(newCreate); -} - -- (NSString *)reflectedStringAttr -{ - WebCore::JSMainThreadNullState state; - return IMPL->getAttribute(WebCore::HTMLNames::reflectedstringattrAttr); -} - -- (void)setReflectedStringAttr:(NSString *)newReflectedStringAttr -{ - WebCore::JSMainThreadNullState state; - IMPL->setAttribute(WebCore::HTMLNames::reflectedstringattrAttr, newReflectedStringAttr); -} - -- (int)reflectedIntegralAttr -{ - WebCore::JSMainThreadNullState state; - return IMPL->getIntegralAttribute(WebCore::HTMLNames::reflectedintegralattrAttr); -} - -- (void)setReflectedIntegralAttr:(int)newReflectedIntegralAttr -{ - WebCore::JSMainThreadNullState state; - IMPL->setIntegralAttribute(WebCore::HTMLNames::reflectedintegralattrAttr, newReflectedIntegralAttr); -} - -- (unsigned)reflectedUnsignedIntegralAttr -{ - WebCore::JSMainThreadNullState state; - return IMPL->getUnsignedIntegralAttribute(WebCore::HTMLNames::reflectedunsignedintegralattrAttr); -} - -- (void)setReflectedUnsignedIntegralAttr:(unsigned)newReflectedUnsignedIntegralAttr -{ - WebCore::JSMainThreadNullState state; - IMPL->setUnsignedIntegralAttribute(WebCore::HTMLNames::reflectedunsignedintegralattrAttr, newReflectedUnsignedIntegralAttr); -} - -- (BOOL)reflectedBooleanAttr -{ - WebCore::JSMainThreadNullState state; - return IMPL->hasAttribute(WebCore::HTMLNames::reflectedbooleanattrAttr); -} - -- (void)setReflectedBooleanAttr:(BOOL)newReflectedBooleanAttr -{ - WebCore::JSMainThreadNullState state; - IMPL->setBooleanAttribute(WebCore::HTMLNames::reflectedbooleanattrAttr, newReflectedBooleanAttr); -} - -- (NSString *)reflectedURLAttr -{ - WebCore::JSMainThreadNullState state; - return IMPL->getURLAttribute(WebCore::HTMLNames::reflectedurlattrAttr); -} - -- (void)setReflectedURLAttr:(NSString *)newReflectedURLAttr -{ - WebCore::JSMainThreadNullState state; - IMPL->setAttribute(WebCore::HTMLNames::reflectedurlattrAttr, newReflectedURLAttr); -} - -- (NSString *)reflectedNonEmptyURLAttr -{ - WebCore::JSMainThreadNullState state; - return IMPL->getNonEmptyURLAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr); -} - -- (void)setReflectedNonEmptyURLAttr:(NSString *)newReflectedNonEmptyURLAttr -{ - WebCore::JSMainThreadNullState state; - IMPL->setAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr, newReflectedNonEmptyURLAttr); -} - -- (NSString *)reflectedStringAttr -{ - WebCore::JSMainThreadNullState state; - return IMPL->getAttribute(WebCore::HTMLNames::customContentStringAttrAttr); -} - -- (void)setReflectedStringAttr:(NSString *)newReflectedStringAttr -{ - WebCore::JSMainThreadNullState state; - IMPL->setAttribute(WebCore::HTMLNames::customContentStringAttrAttr, newReflectedStringAttr); -} - -- (int)reflectedCustomIntegralAttr -{ - WebCore::JSMainThreadNullState state; - return IMPL->getIntegralAttribute(WebCore::HTMLNames::customContentIntegralAttrAttr); -} - -- (void)setReflectedCustomIntegralAttr:(int)newReflectedCustomIntegralAttr -{ - WebCore::JSMainThreadNullState state; - IMPL->setIntegralAttribute(WebCore::HTMLNames::customContentIntegralAttrAttr, newReflectedCustomIntegralAttr); -} - -- (BOOL)reflectedCustomBooleanAttr -{ - WebCore::JSMainThreadNullState state; - return IMPL->hasAttribute(WebCore::HTMLNames::customContentBooleanAttrAttr); -} - -- (void)setReflectedCustomBooleanAttr:(BOOL)newReflectedCustomBooleanAttr -{ - WebCore::JSMainThreadNullState state; - IMPL->setBooleanAttribute(WebCore::HTMLNames::customContentBooleanAttrAttr, newReflectedCustomBooleanAttr); -} - -- (NSString *)reflectedCustomURLAttr -{ - WebCore::JSMainThreadNullState state; - return IMPL->getURLAttribute(WebCore::HTMLNames::customContentURLAttrAttr); -} - -- (void)setReflectedCustomURLAttr:(NSString *)newReflectedCustomURLAttr -{ - WebCore::JSMainThreadNullState state; - IMPL->setAttribute(WebCore::HTMLNames::customContentURLAttrAttr, newReflectedCustomURLAttr); -} - -- (NSString *)reflectedCustomNonEmptyURLAttr -{ - WebCore::JSMainThreadNullState state; - return IMPL->getNonEmptyURLAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr); -} - -- (void)setReflectedCustomNonEmptyURLAttr:(NSString *)newReflectedCustomNonEmptyURLAttr -{ - WebCore::JSMainThreadNullState state; - IMPL->setAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr, newReflectedCustomNonEmptyURLAttr); -} - -- (int)attrWithGetterException -{ - WebCore::JSMainThreadNullState state; - WebCore::ExceptionCode ec = 0; - int result = IMPL->attrWithGetterException(ec); - WebCore::raiseOnDOMError(ec); - return result; -} - -- (void)setAttrWithGetterException:(int)newAttrWithGetterException -{ - WebCore::JSMainThreadNullState state; - WebCore::ExceptionCode ec = 0; - IMPL->setAttrWithGetterException(newAttrWithGetterException, ec); - WebCore::raiseOnDOMError(ec); -} - -- (int)attrWithSetterException -{ - WebCore::JSMainThreadNullState state; - return IMPL->attrWithSetterException(); -} - -- (void)setAttrWithSetterException:(int)newAttrWithSetterException -{ - WebCore::JSMainThreadNullState state; - WebCore::ExceptionCode ec = 0; - IMPL->setAttrWithSetterException(newAttrWithSetterException, ec); - WebCore::raiseOnDOMError(ec); -} - -- (NSString *)stringAttrWithGetterException -{ - WebCore::JSMainThreadNullState state; - WebCore::ExceptionCode ec = 0; - NSString *result = IMPL->stringAttrWithGetterException(ec); - WebCore::raiseOnDOMError(ec); - return result; -} - -- (void)setStringAttrWithGetterException:(NSString *)newStringAttrWithGetterException -{ - WebCore::JSMainThreadNullState state; - WebCore::ExceptionCode ec = 0; - IMPL->setStringAttrWithGetterException(newStringAttrWithGetterException, ec); - WebCore::raiseOnDOMError(ec); -} - -- (NSString *)stringAttrWithSetterException -{ - WebCore::JSMainThreadNullState state; - return IMPL->stringAttrWithSetterException(); -} - -- (void)setStringAttrWithSetterException:(NSString *)newStringAttrWithSetterException -{ - WebCore::JSMainThreadNullState state; - WebCore::ExceptionCode ec = 0; - IMPL->setStringAttrWithSetterException(newStringAttrWithSetterException, ec); - WebCore::raiseOnDOMError(ec); -} - -- (int)customAttr -{ - WebCore::JSMainThreadNullState state; - return IMPL->customAttr(); -} - -- (void)setCustomAttr:(int)newCustomAttr -{ - WebCore::JSMainThreadNullState state; - IMPL->setCustomAttr(newCustomAttr); -} - -- (NSString *)scriptStringAttr -{ - WebCore::JSMainThreadNullState state; - return IMPL->scriptStringAttr(); -} - -#if ENABLE(Condition1) -- (int)conditionalAttr1 -{ - WebCore::JSMainThreadNullState state; - return IMPL->conditionalAttr1(); -} - -- (void)setConditionalAttr1:(int)newConditionalAttr1 -{ - WebCore::JSMainThreadNullState state; - IMPL->setConditionalAttr1(newConditionalAttr1); -} -#endif - -#if ENABLE(Condition1) && ENABLE(Condition2) -- (int)conditionalAttr2 -{ - WebCore::JSMainThreadNullState state; - return IMPL->conditionalAttr2(); -} - -- (void)setConditionalAttr2:(int)newConditionalAttr2 -{ - WebCore::JSMainThreadNullState state; - IMPL->setConditionalAttr2(newConditionalAttr2); -} -#endif - -#if ENABLE(Condition1) || ENABLE(Condition2) -- (int)conditionalAttr3 -{ - WebCore::JSMainThreadNullState state; - return IMPL->conditionalAttr3(); -} - -- (void)setConditionalAttr3:(int)newConditionalAttr3 -{ - WebCore::JSMainThreadNullState state; - IMPL->setConditionalAttr3(newConditionalAttr3); -} -#endif - -- (int)descriptionName -{ - WebCore::JSMainThreadNullState state; - return IMPL->description(); -} - -- (int)idName -{ - WebCore::JSMainThreadNullState state; - return IMPL->id(); -} - -- (void)setIdName:(int)newIdName -{ - WebCore::JSMainThreadNullState state; - IMPL->setId(newIdName); -} - -- (NSString *)hashName -{ - WebCore::JSMainThreadNullState state; - return IMPL->hash(); -} - -- (void)voidMethod -{ - WebCore::JSMainThreadNullState state; - IMPL->voidMethod(); -} - -- (void)voidMethodWithArgs:(int)intArg strArg:(NSString *)strArg objArg:(DOMTestObj *)objArg -{ - WebCore::JSMainThreadNullState state; - IMPL->voidMethodWithArgs(intArg, strArg, core(objArg)); -} - -- (int)intMethod -{ - WebCore::JSMainThreadNullState state; - return IMPL->intMethod(); -} - -- (int)intMethodWithArgs:(int)intArg strArg:(NSString *)strArg objArg:(DOMTestObj *)objArg -{ - WebCore::JSMainThreadNullState state; - return IMPL->intMethodWithArgs(intArg, strArg, core(objArg)); -} - -- (DOMTestObj *)objMethod -{ - WebCore::JSMainThreadNullState state; - return kit(WTF::getPtr(IMPL->objMethod())); -} - -- (DOMTestObj *)objMethodWithArgs:(int)intArg strArg:(NSString *)strArg objArg:(DOMTestObj *)objArg -{ - WebCore::JSMainThreadNullState state; - return kit(WTF::getPtr(IMPL->objMethodWithArgs(intArg, strArg, core(objArg)))); -} - -- (DOMTestObj *)methodThatRequiresAllArgs:(NSString *)strArg objArg:(DOMTestObj *)objArg -{ - WebCore::JSMainThreadNullState state; - return kit(WTF::getPtr(IMPL->methodThatRequiresAllArgs(strArg, core(objArg)))); -} - -- (DOMTestObj *)methodThatRequiresAllArgsAndThrows:(NSString *)strArg objArg:(DOMTestObj *)objArg -{ - WebCore::JSMainThreadNullState state; - WebCore::ExceptionCode ec = 0; - DOMTestObj *result = kit(WTF::getPtr(IMPL->methodThatRequiresAllArgsAndThrows(strArg, core(objArg), ec))); - WebCore::raiseOnDOMError(ec); - return result; -} - -- (void)serializedValue:(NSString *)serializedArg -{ - WebCore::JSMainThreadNullState state; - IMPL->serializedValue(WebCore::SerializedScriptValue::create(WTF::String(serializedArg))); -} - -- (void)idbKey:(DOMIDBKey *)key -{ - WebCore::JSMainThreadNullState state; - IMPL->idbKey(core(key)); -} - -- (void)optionsObject:(DOMOptionsObject *)oo ooo:(DOMOptionsObject *)ooo -{ - WebCore::JSMainThreadNullState state; - IMPL->optionsObject(core(oo), core(ooo)); -} - -- (void)methodWithException -{ - WebCore::JSMainThreadNullState state; - WebCore::ExceptionCode ec = 0; - IMPL->methodWithException(ec); - WebCore::raiseOnDOMError(ec); -} - -- (void)customMethod -{ - WebCore::JSMainThreadNullState state; - IMPL->customMethod(); -} - -- (void)customMethodWithArgs:(int)intArg strArg:(NSString *)strArg objArg:(DOMTestObj *)objArg -{ - WebCore::JSMainThreadNullState state; - IMPL->customMethodWithArgs(intArg, strArg, core(objArg)); -} - -- (void)customArgsAndException:(DOMlog *)intArg -{ - WebCore::JSMainThreadNullState state; - WebCore::ExceptionCode ec = 0; - IMPL->customArgsAndException(core(intArg), ec); - WebCore::raiseOnDOMError(ec); -} - -- (void)addEventListener:(NSString *)type listener:(id <DOMEventListener>)listener useCapture:(BOOL)useCapture -{ - WebCore::JSMainThreadNullState state; - RefPtr<WebCore::EventListener> nativeEventListener = WebCore::ObjCEventListener::wrap(listener); - IMPL->addEventListener(type, WTF::getPtr(nativeEventListener), useCapture); -} - -- (void)removeEventListener:(NSString *)type listener:(id <DOMEventListener>)listener useCapture:(BOOL)useCapture -{ - WebCore::JSMainThreadNullState state; - RefPtr<WebCore::EventListener> nativeEventListener = WebCore::ObjCEventListener::wrap(listener); - IMPL->removeEventListener(type, WTF::getPtr(nativeEventListener), useCapture); -} - -- (void)withDynamicFrame -{ - WebCore::JSMainThreadNullState state; - IMPL->withDynamicFrame(); -} - -- (void)withDynamicFrameAndArg:(int)intArg -{ - WebCore::JSMainThreadNullState state; - IMPL->withDynamicFrameAndArg(intArg); -} - -- (void)withDynamicFrameAndOptionalArg:(int)intArg optionalArg:(int)optionalArg -{ - WebCore::JSMainThreadNullState state; - IMPL->withDynamicFrameAndOptionalArg(intArg, optionalArg); -} - -- (void)withDynamicFrameAndUserGesture:(int)intArg -{ - WebCore::JSMainThreadNullState state; - IMPL->withDynamicFrameAndUserGesture(intArg); -} - -- (void)withDynamicFrameAndUserGestureASAD:(int)intArg optionalArg:(int)optionalArg -{ - WebCore::JSMainThreadNullState state; - IMPL->withDynamicFrameAndUserGestureASAD(intArg, optionalArg); -} - -- (void)withScriptStateVoid -{ - WebCore::JSMainThreadNullState state; - IMPL->withScriptStateVoid(); -} - -- (DOMTestObj *)withScriptStateObj -{ - WebCore::JSMainThreadNullState state; - return kit(WTF::getPtr(IMPL->withScriptStateObj())); -} - -- (void)withScriptStateVoidException -{ - WebCore::JSMainThreadNullState state; - WebCore::ExceptionCode ec = 0; - IMPL->withScriptStateVoidException(ec); - WebCore::raiseOnDOMError(ec); -} - -- (DOMTestObj *)withScriptStateObjException -{ - WebCore::JSMainThreadNullState state; - WebCore::ExceptionCode ec = 0; - DOMTestObj *result = kit(WTF::getPtr(IMPL->withScriptStateObjException(ec))); - WebCore::raiseOnDOMError(ec); - return result; -} - -- (void)withScriptExecutionContext -{ - WebCore::JSMainThreadNullState state; - IMPL->withScriptExecutionContext(); -} - -- (void)methodWithOptionalArg:(int)opt -{ - WebCore::JSMainThreadNullState state; - IMPL->methodWithOptionalArg(opt); -} - -- (void)methodWithNonOptionalArgAndOptionalArg:(int)nonOpt opt:(int)opt -{ - WebCore::JSMainThreadNullState state; - IMPL->methodWithNonOptionalArgAndOptionalArg(nonOpt, opt); -} - -- (void)methodWithNonOptionalArgAndTwoOptionalArgs:(int)nonOpt opt1:(int)opt1 opt2:(int)opt2 -{ - WebCore::JSMainThreadNullState state; - IMPL->methodWithNonOptionalArgAndTwoOptionalArgs(nonOpt, opt1, opt2); -} - -- (void)classMethod -{ - WebCore::JSMainThreadNullState state; - IMPL->classMethod(); -} - -- (int)classMethodWithOptional:(int)arg -{ - WebCore::JSMainThreadNullState state; - return IMPL->classMethodWithOptional(arg); -} - -@end - -WebCore::TestObj* core(DOMTestObj *wrapper) -{ - return wrapper ? reinterpret_cast<WebCore::TestObj*>(wrapper->_internal) : 0; -} - -DOMTestObj *kit(WebCore::TestObj* value) -{ - { DOM_ASSERT_MAIN_THREAD(); WebCoreThreadViolationCheckRoundOne(); }; - if (!value) - return nil; - if (DOMTestObj *wrapper = getDOMWrapper(value)) - return [[wrapper retain] autorelease]; - DOMTestObj *wrapper = [[DOMTestObj alloc] _init]; - wrapper->_internal = reinterpret_cast<DOMObjectInternal*>(value); - value->ref(); - addDOMWrapper(wrapper, value); - return [wrapper autorelease]; -} diff --git a/WebCore/bindings/scripts/test/ObjC/DOMTestObjInternal.h b/WebCore/bindings/scripts/test/ObjC/DOMTestObjInternal.h deleted file mode 100644 index c24ea84..0000000 --- a/WebCore/bindings/scripts/test/ObjC/DOMTestObjInternal.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * This file is part of the WebKit open source project. - * This file has been generated by generate-bindings.pl. DO NOT MODIFY! - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#import <WebCore/DOMTestObj.h> - -#if WEBKIT_VERSION_MAX_ALLOWED >= WEBKIT_VERSION_LATEST - -namespace WebCore { - class TestObj; -} - -WebCore::TestObj* core(DOMTestObj *); -DOMTestObj *kit(WebCore::TestObj*); - -#endif diff --git a/WebCore/bindings/scripts/test/TestCallback.idl b/WebCore/bindings/scripts/test/TestCallback.idl deleted file mode 100644 index 25db4c6..0000000 --- a/WebCore/bindings/scripts/test/TestCallback.idl +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (C) 2009 Google Inc. All rights reserved. - * - * Redistribution and use in source and binary formstrArg, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY - * EXPRESS OR IMPLIED WARRANTIEstrArg, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -// This IDL file is for testing the bindings code generator with an interface -// that has the "Callback" attribute and for tracking changes in its ouput. -module test { - interface [ - Conditional=DATABASE, - Callback - ] TestCallback { - boolean callbackWithClass1Param(in Class1 class1Param); - boolean callbackWithClass2Param(in Class2 class2Param, in DOMString strArg); - long callbackWithNonBoolReturnType(in Class3 class3Param); - [Custom] long customCallback(in Class5 class5Param, in Class6 class6Param); - }; -} diff --git a/WebCore/bindings/scripts/test/TestInterface.idl b/WebCore/bindings/scripts/test/TestInterface.idl deleted file mode 100644 index 1f0aa18..0000000 --- a/WebCore/bindings/scripts/test/TestInterface.idl +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (C) 2010 Google Inc. All rights reserved. - * - * Redistribution and use in source and binary formstrArg, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY - * EXPRESS OR IMPLIED WARRANTIEstrArg, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -// This IDL file is for testing the bindings code generator and for tracking -// changes in its ouput. -module test { - interface [ - Conditional=Condition1|Condition2, - CanBeConstructed, - CallWith=ScriptExecutionContext - ] TestInterface { - }; -} diff --git a/WebCore/bindings/scripts/test/TestMediaQueryListListener.idl b/WebCore/bindings/scripts/test/TestMediaQueryListListener.idl deleted file mode 100644 index 536393b..0000000 --- a/WebCore/bindings/scripts/test/TestMediaQueryListListener.idl +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -// This IDL file is for testing the bindings code generator with an interface -// that has methods receiving a parameter of the type MediaQueryListListener. -module test { - interface TestMediaQueryListListener { - void method(in MediaQueryListListener listener); - }; -} diff --git a/WebCore/bindings/scripts/test/TestObj.idl b/WebCore/bindings/scripts/test/TestObj.idl deleted file mode 100644 index a4eff26..0000000 --- a/WebCore/bindings/scripts/test/TestObj.idl +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Copyright (C) 2009 Google Inc. All rights reserved. - * Copyright (C) 2010 Apple Inc. All rights reserved. - * - * Redistribution and use in source and binary formstrArg, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY - * EXPRESS OR IMPLIED WARRANTIEstrArg, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -// This IDL file is for testing the bindings code generator and for tracking -// changes in its ouput. -module test { - interface TestObj { - // Attributes - readonly attribute long readOnlyIntAttr; - readonly attribute DOMString readOnlyStringAttr; - readonly attribute TestObj readOnlyTestObjAttr; - attribute short shortAttr; - attribute unsigned short unsignedShortAttr; - attribute long intAttr; - attribute long long longLongAttr; - attribute unsigned long long unsignedLongLongAttr; - attribute DOMString stringAttr; - attribute TestObj testObjAttr; - - JS, V8 - // WK_ucfirst, WK_lcfirst exceptional cases. - attribute TestObj XMLObjAttr; - attribute boolean create; - - // Reflected DOM attributes - attribute [Reflect] DOMString reflectedStringAttr; - attribute [Reflect] long reflectedIntegralAttr; - attribute [Reflect] unsigned long reflectedUnsignedIntegralAttr; - attribute [Reflect] boolean reflectedBooleanAttr; - attribute [Reflect, URL] DOMString reflectedURLAttr; - attribute [Reflect, NonEmpty, URL] DOMString reflectedNonEmptyURLAttr; - attribute [Reflect=customContentStringAttr] DOMString reflectedStringAttr; - attribute [Reflect=customContentIntegralAttr] long reflectedCustomIntegralAttr; - attribute [Reflect=customContentBooleanAttr] boolean reflectedCustomBooleanAttr; - attribute [Reflect=customContentURLAttr, URL] DOMString reflectedCustomURLAttr; - attribute [Reflect=customContentNonEmptyURLAttr, NonEmpty, URL] DOMString reflectedCustomNonEmptyURLAttr; - - // Methods - void voidMethod(); - void voidMethodWithArgs(in long intArg, in DOMString strArg, in TestObj objArg); - long intMethod(); - long intMethodWithArgs(in long intArg, in DOMString strArg, in TestObj objArg); - TestObj objMethod(); - TestObj objMethodWithArgs(in long intArg, in DOMString strArg, in TestObj objArg); - - [RequiresAllArguments] TestObj methodThatRequiresAllArgs(in DOMString strArg, in TestObj objArg); - [RequiresAllArguments=Raise] TestObj methodThatRequiresAllArgsAndThrows(in DOMString strArg, in TestObj objArg) - raises(DOMException); - - void serializedValue(in SerializedScriptValue serializedArg); - void idbKey(in IDBKey key); - void optionsObject(in OptionsObject oo, in [Optional] OptionsObject ooo); - - // Exceptions - void methodWithException() raises(DOMException); - attribute long attrWithGetterException getter raises(DOMException); - attribute long attrWithSetterException setter raises(DOMException); - attribute DOMString stringAttrWithGetterException getter raises(DOMException); - attribute DOMString stringAttrWithSetterException setter raises(DOMException); - - // 'Custom' extended attribute - attribute [Custom] long customAttr; - [Custom] void customMethod(); - [Custom] void customMethodWithArgs(in long intArg, in DOMString strArg, in TestObj objArg); - - [CustomArgumentHandling] void customArgsAndException(in log intArg) - raises(DOMException); - - void addEventListener(in DOMString type, - in EventListener listener, - in boolean useCapture); - void removeEventListener(in DOMString type, - in EventListener listener, - in boolean useCapture); - - // 'CallWith' extended attribute - [CallWith=DynamicFrame] void withDynamicFrame(); - [CallWith=DynamicFrame] void withDynamicFrameAndArg(in long intArg); - [CallWith=DynamicFrame] void withDynamicFrameAndOptionalArg(in long intArg, in [Optional] long optionalArg); - [NeedsUserGestureCheck, CallWith=DynamicFrame] void withDynamicFrameAndUserGesture(in long intArg); - [NeedsUserGestureCheck, CallWith=DynamicFrame] void withDynamicFrameAndUserGestureASAD(in long intArg, in [Optional] long optionalArg); - [CallWith=ScriptState] void withScriptStateVoid(); - [CallWith=ScriptState] TestObj withScriptStateObj(); - [CallWith=ScriptState] void withScriptStateVoidException() - raises(DOMException); - [CallWith=ScriptState] TestObj withScriptStateObjException() - raises(DOMException); - [CallWith=ScriptExecutionContext] void withScriptExecutionContext(); - - // 'Optional' extended attribute - void methodWithOptionalArg(in [Optional] long opt); - void methodWithNonOptionalArgAndOptionalArg(in long nonOpt, in [Optional] long opt); - void methodWithNonOptionalArgAndTwoOptionalArgs(in long nonOpt, in [Optional] long opt1, in long opt2); - -#if defined(TESTING_V8) || defined(TESTING_JS) - // 'Callback' extended attribute - void methodWithCallbackArg(in [Callback] TestCallback callback); - void methodWithNonCallbackArgAndCallbackArg(in long nonCallback, in [Callback] TestCallback callback); - void methodWithCallbackAndOptionalArg(in [Callback, Optional] TestCallback callback); -#endif - - // 'ConvertScriptString' extended attribute - readonly attribute [ConvertScriptString] DOMString scriptStringAttr; - - // 'Conditional' extended attribute - attribute [Conditional=Condition1] long conditionalAttr1; - attribute [Conditional=Condition1&Condition2] long conditionalAttr2; - attribute [Conditional=Condition1|Condition2] long conditionalAttr3; - -#if defined(TESTING_V8) || defined(TESTING_JS) - // Overloads - void overloadedMethod(in TestObj objArg, in DOMString strArg); - void overloadedMethod(in TestObj objArg, in [Optional] long intArg); - void overloadedMethod(in DOMString strArg); - void overloadedMethod(in long intArg); - void overloadedMethod(in [Callback] TestCallback callback); -#endif - - // Class methods within JavaScript (like what's used for IDBKeyRange). - [ClassMethod] void classMethod(); - [ClassMethod] long classMethodWithOptional(in [Optional] long arg); - -#if defined(TESTING_V8) - // 'EnabledAtRuntime' methods and attributes. - [EnabledAtRuntime] void enabledAtRuntimeMethod1(in int intArg); - [EnabledAtRuntime=FeatureName] void enabledAtRuntimeMethod2(in int intArg); - attribute [EnabledAtRuntime] long enabledAtRuntimeAttr1; - attribute [EnabledAtRuntime=FeatureName] long enabledAtRuntimeAttr2; -#endif - - // ObjectiveC reserved words. - readonly attribute long description; - attribute long id; - readonly attribute DOMString hash; - - // Check constants and enums. - const unsigned short CONST_VALUE_0 = 0; - const unsigned short CONST_VALUE_1 = 1; - const unsigned short CONST_VALUE_2 = 2; - const unsigned short CONST_VALUE_4 = 4; - const unsigned short CONST_VALUE_8 = 8; - const short CONST_VALUE_9 = -1; - const DOMString CONST_VALUE_10 = "my constant string"; - const unsigned short CONST_VALUE_11 = 0xffffffff; - const unsigned short CONST_VALUE_12 = 0x01; - const unsigned short CONST_VALUE_13 = 0X20; - const unsigned short CONST_VALUE_14 = 0x1abc; - }; -} diff --git a/WebCore/bindings/scripts/test/V8/V8TestCallback.cpp b/WebCore/bindings/scripts/test/V8/V8TestCallback.cpp deleted file mode 100644 index c286c24..0000000 --- a/WebCore/bindings/scripts/test/V8/V8TestCallback.cpp +++ /dev/null @@ -1,113 +0,0 @@ -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include "config.h" -#include "V8TestCallback.h" - -#if ENABLE(DATABASE) - -#include "ScriptExecutionContext.h" -#include "V8Class1.h" -#include "V8Class2.h" -#include "V8CustomVoidCallback.h" -#include "V8DOMString.h" -#include "V8Proxy.h" - -#include <wtf/Assertions.h> - -namespace WebCore { - -V8TestCallback::V8TestCallback(v8::Local<v8::Object> callback, ScriptExecutionContext* context) - : ActiveDOMCallback(context) - , m_callback(v8::Persistent<v8::Object>::New(callback)) - , m_worldContext(UseCurrentWorld) -{ -} - -V8TestCallback::~V8TestCallback() -{ - m_callback.Dispose(); -} - -// Functions - -bool V8TestCallback::callbackWithClass1Param(Class1* class1Param) -{ - if (!canInvokeCallback()) - return true; - - v8::HandleScope handleScope; - - v8::Handle<v8::Context> v8Context = toV8Context(scriptExecutionContext(), m_worldContext); - if (v8Context.IsEmpty()) - return true; - - v8::Context::Scope scope(v8Context); - - v8::Handle<v8::Value> class1ParamHandle = toV8(class1Param); - if (class1ParamHandle.IsEmpty()) { - CRASH(); - return true; - } - - v8::Handle<v8::Value> argv[] = { - class1ParamHandle - }; - - bool callbackReturnValue = false; - return !invokeCallback(m_callback, 1, argv, callbackReturnValue, scriptExecutionContext()); -} - -bool V8TestCallback::callbackWithClass2Param(Class2* class2Param, const String& strArg) -{ - if (!canInvokeCallback()) - return true; - - v8::HandleScope handleScope; - - v8::Handle<v8::Context> v8Context = toV8Context(scriptExecutionContext(), m_worldContext); - if (v8Context.IsEmpty()) - return true; - - v8::Context::Scope scope(v8Context); - - v8::Handle<v8::Value> class2ParamHandle = toV8(class2Param); - if (class2ParamHandle.IsEmpty()) { - CRASH(); - return true; - } - v8::Handle<v8::Value> strArgHandle = toV8(strArg); - if (strArgHandle.IsEmpty()) { - CRASH(); - return true; - } - - v8::Handle<v8::Value> argv[] = { - class2ParamHandle, - strArgHandle - }; - - bool callbackReturnValue = false; - return !invokeCallback(m_callback, 2, argv, callbackReturnValue, scriptExecutionContext()); -} - -} // namespace WebCore - -#endif // ENABLE(DATABASE) diff --git a/WebCore/bindings/scripts/test/V8/V8TestCallback.h b/WebCore/bindings/scripts/test/V8/V8TestCallback.h deleted file mode 100644 index a105d75..0000000 --- a/WebCore/bindings/scripts/test/V8/V8TestCallback.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#if ENABLE(DATABASE) - -#ifndef V8TestCallback_h -#define V8TestCallback_h - -#include "ActiveDOMCallback.h" -#include "TestCallback.h" -#include "WorldContextHandle.h" -#include <v8.h> -#include <wtf/Forward.h> - -namespace WebCore { - -class ScriptExecutionContext; - -class V8TestCallback : public TestCallback, public ActiveDOMCallback { -public: - static PassRefPtr<V8TestCallback> create(v8::Local<v8::Value> value, ScriptExecutionContext* context) - { - ASSERT(value->IsObject()); - ASSERT(context); - return adoptRef(new V8TestCallback(value->ToObject(), context)); - } - - virtual ~V8TestCallback(); - - // Functions - virtual bool callbackWithClass1Param(Class1* class1Param); - virtual bool callbackWithClass2Param(Class2* class2Param, const String& strArg); - COMPILE_ASSERT(false) virtual int callbackWithNonBoolReturnType(Class3* class3Param); - virtual int customCallback(Class5* class5Param, Class6* class6Param); - -private: - V8TestCallback(v8::Local<v8::Object>, ScriptExecutionContext*); - - v8::Persistent<v8::Object> m_callback; - WorldContextHandle m_worldContext; -}; - -} - -#endif // V8TestCallback_h - -#endif // ENABLE(DATABASE) diff --git a/WebCore/bindings/scripts/test/V8/V8TestInterface.cpp b/WebCore/bindings/scripts/test/V8/V8TestInterface.cpp deleted file mode 100644 index 267f1f0..0000000 --- a/WebCore/bindings/scripts/test/V8/V8TestInterface.cpp +++ /dev/null @@ -1,99 +0,0 @@ -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include "config.h" -#include "V8TestInterface.h" - -#if ENABLE(Condition1) || ENABLE(Condition2) - -#include "RuntimeEnabledFeatures.h" -#include "V8Binding.h" -#include "V8BindingState.h" -#include "V8DOMWrapper.h" -#include "V8IsolatedContext.h" -#include "V8Proxy.h" - -namespace WebCore { - -WrapperTypeInfo V8TestInterface::info = { V8TestInterface::GetTemplate, V8TestInterface::derefObject, 0 }; - -namespace TestInterfaceInternal { - -template <typename T> void V8_USE(T) { } - -} // namespace TestInterfaceInternal - -v8::Handle<v8::Value> V8TestInterface::constructorCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestInterface.Contructor"); - return V8Proxy::constructDOMObjectWithScriptExecutionContext<TestInterface>(args, &info); -} -static v8::Persistent<v8::FunctionTemplate> ConfigureV8TestInterfaceTemplate(v8::Persistent<v8::FunctionTemplate> desc) -{ - v8::Local<v8::Signature> defaultSignature = configureTemplate(desc, "TestInterface", v8::Persistent<v8::FunctionTemplate>(), V8TestInterface::internalFieldCount, - 0, 0, - 0, 0); - desc->SetCallHandler(V8TestInterface::constructorCallback); - - - // Custom toString template - desc->Set(getToStringName(), getToStringTemplate()); - return desc; -} - -v8::Persistent<v8::FunctionTemplate> V8TestInterface::GetRawTemplate() -{ - static v8::Persistent<v8::FunctionTemplate> V8TestInterfaceRawCache = createRawTemplate(); - return V8TestInterfaceRawCache; -} - -v8::Persistent<v8::FunctionTemplate> V8TestInterface::GetTemplate() -{ - static v8::Persistent<v8::FunctionTemplate> V8TestInterfaceCache = ConfigureV8TestInterfaceTemplate(GetRawTemplate()); - return V8TestInterfaceCache; -} - -bool V8TestInterface::HasInstance(v8::Handle<v8::Value> value) -{ - return GetRawTemplate()->HasInstance(value); -} - - -v8::Handle<v8::Object> V8TestInterface::wrapSlow(TestInterface* impl) -{ - v8::Handle<v8::Object> wrapper; - V8Proxy* proxy = 0; - wrapper = V8DOMWrapper::instantiateV8Object(proxy, &info, impl); - if (wrapper.IsEmpty()) - return wrapper; - - impl->ref(); - getDOMObjectMap().set(impl, v8::Persistent<v8::Object>::New(wrapper)); - return wrapper; -} - -void V8TestInterface::derefObject(void* object) -{ - static_cast<TestInterface*>(object)->deref(); -} - -} // namespace WebCore - -#endif // ENABLE(Condition1) || ENABLE(Condition2) diff --git a/WebCore/bindings/scripts/test/V8/V8TestInterface.h b/WebCore/bindings/scripts/test/V8/V8TestInterface.h deleted file mode 100644 index c1e319b..0000000 --- a/WebCore/bindings/scripts/test/V8/V8TestInterface.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#if ENABLE(Condition1) || ENABLE(Condition2) - -#ifndef V8TestInterface_h -#define V8TestInterface_h - -#include "TestInterface.h" -#include "V8DOMWrapper.h" -#include "WrapperTypeInfo.h" -#include "wtf/text/StringHash.h" -#include <v8.h> -#include <wtf/HashMap.h> - -namespace WebCore { - -class V8TestInterface { - -public: - static bool HasInstance(v8::Handle<v8::Value> value); - static v8::Persistent<v8::FunctionTemplate> GetRawTemplate(); - static v8::Persistent<v8::FunctionTemplate> GetTemplate(); - static TestInterface* toNative(v8::Handle<v8::Object> object) - { - return reinterpret_cast<TestInterface*>(object->GetPointerFromInternalField(v8DOMWrapperObjectIndex)); - } - inline static v8::Handle<v8::Object> wrap(TestInterface*); - static void derefObject(void*); - static WrapperTypeInfo info; - static v8::Handle<v8::Value> constructorCallback(const v8::Arguments& args); - static const int internalFieldCount = v8DefaultWrapperInternalFieldCount + 0; -private: - static v8::Handle<v8::Object> wrapSlow(TestInterface*); -}; - - -v8::Handle<v8::Object> V8TestInterface::wrap(TestInterface* impl) -{ - v8::Handle<v8::Object> wrapper = getDOMObjectMap().get(impl); - if (!wrapper.IsEmpty()) - return wrapper; - return V8TestInterface::wrapSlow(impl); -} - -inline v8::Handle<v8::Value> toV8(TestInterface* impl) -{ - if (!impl) - return v8::Null(); - return V8TestInterface::wrap(impl); -} -inline v8::Handle<v8::Value> toV8(PassRefPtr< TestInterface > impl) -{ - return toV8(impl.get()); -} -} - -#endif // V8TestInterface_h -#endif // ENABLE(Condition1) || ENABLE(Condition2) - diff --git a/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp b/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp deleted file mode 100644 index ab9e6db..0000000 --- a/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp +++ /dev/null @@ -1,106 +0,0 @@ -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include "config.h" -#include "V8TestMediaQueryListListener.h" - -#include "ExceptionCode.h" -#include "MediaQueryListListener.h" -#include "RuntimeEnabledFeatures.h" -#include "V8Binding.h" -#include "V8BindingMacros.h" -#include "V8BindingState.h" -#include "V8DOMWrapper.h" -#include "V8IsolatedContext.h" -#include "V8Proxy.h" - -namespace WebCore { - -WrapperTypeInfo V8TestMediaQueryListListener::info = { V8TestMediaQueryListListener::GetTemplate, V8TestMediaQueryListListener::derefObject, 0 }; - -namespace TestMediaQueryListListenerInternal { - -template <typename T> void V8_USE(T) { } - -static v8::Handle<v8::Value> methodCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestMediaQueryListListener.method"); - TestMediaQueryListListener* imp = V8TestMediaQueryListListener::toNative(args.Holder()); - EXCEPTION_BLOCK(RefPtr<MediaQueryListListener>, listener, MediaQueryListListener::create(args[0])); - imp->method(listener); - return v8::Handle<v8::Value>(); -} - -} // namespace TestMediaQueryListListenerInternal - -static const BatchedCallback TestMediaQueryListListenerCallbacks[] = { - {"method", TestMediaQueryListListenerInternal::methodCallback}, -}; -static v8::Persistent<v8::FunctionTemplate> ConfigureV8TestMediaQueryListListenerTemplate(v8::Persistent<v8::FunctionTemplate> desc) -{ - v8::Local<v8::Signature> defaultSignature = configureTemplate(desc, "TestMediaQueryListListener", v8::Persistent<v8::FunctionTemplate>(), V8TestMediaQueryListListener::internalFieldCount, - 0, 0, - TestMediaQueryListListenerCallbacks, WTF_ARRAY_LENGTH(TestMediaQueryListListenerCallbacks)); - v8::Local<v8::ObjectTemplate> instance = desc->InstanceTemplate(); - v8::Local<v8::ObjectTemplate> proto = desc->PrototypeTemplate(); - - - // Custom toString template - desc->Set(getToStringName(), getToStringTemplate()); - return desc; -} - -v8::Persistent<v8::FunctionTemplate> V8TestMediaQueryListListener::GetRawTemplate() -{ - static v8::Persistent<v8::FunctionTemplate> V8TestMediaQueryListListenerRawCache = createRawTemplate(); - return V8TestMediaQueryListListenerRawCache; -} - -v8::Persistent<v8::FunctionTemplate> V8TestMediaQueryListListener::GetTemplate() -{ - static v8::Persistent<v8::FunctionTemplate> V8TestMediaQueryListListenerCache = ConfigureV8TestMediaQueryListListenerTemplate(GetRawTemplate()); - return V8TestMediaQueryListListenerCache; -} - -bool V8TestMediaQueryListListener::HasInstance(v8::Handle<v8::Value> value) -{ - return GetRawTemplate()->HasInstance(value); -} - - -v8::Handle<v8::Object> V8TestMediaQueryListListener::wrapSlow(TestMediaQueryListListener* impl) -{ - v8::Handle<v8::Object> wrapper; - V8Proxy* proxy = 0; - wrapper = V8DOMWrapper::instantiateV8Object(proxy, &info, impl); - if (wrapper.IsEmpty()) - return wrapper; - - impl->ref(); - getDOMObjectMap().set(impl, v8::Persistent<v8::Object>::New(wrapper)); - return wrapper; -} - -void V8TestMediaQueryListListener::derefObject(void* object) -{ - static_cast<TestMediaQueryListListener*>(object)->deref(); -} - -} // namespace WebCore diff --git a/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.h b/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.h deleted file mode 100644 index 908d9cd..0000000 --- a/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#ifndef V8TestMediaQueryListListener_h -#define V8TestMediaQueryListListener_h - -#include "TestMediaQueryListListener.h" -#include "V8DOMWrapper.h" -#include "WrapperTypeInfo.h" -#include "wtf/text/StringHash.h" -#include <v8.h> -#include <wtf/HashMap.h> - -namespace WebCore { - -class V8TestMediaQueryListListener { - -public: - static bool HasInstance(v8::Handle<v8::Value> value); - static v8::Persistent<v8::FunctionTemplate> GetRawTemplate(); - static v8::Persistent<v8::FunctionTemplate> GetTemplate(); - static TestMediaQueryListListener* toNative(v8::Handle<v8::Object> object) - { - return reinterpret_cast<TestMediaQueryListListener*>(object->GetPointerFromInternalField(v8DOMWrapperObjectIndex)); - } - inline static v8::Handle<v8::Object> wrap(TestMediaQueryListListener*); - static void derefObject(void*); - static WrapperTypeInfo info; - static const int internalFieldCount = v8DefaultWrapperInternalFieldCount + 0; -private: - static v8::Handle<v8::Object> wrapSlow(TestMediaQueryListListener*); -}; - - -v8::Handle<v8::Object> V8TestMediaQueryListListener::wrap(TestMediaQueryListListener* impl) -{ - v8::Handle<v8::Object> wrapper = getDOMObjectMap().get(impl); - if (!wrapper.IsEmpty()) - return wrapper; - return V8TestMediaQueryListListener::wrapSlow(impl); -} - -inline v8::Handle<v8::Value> toV8(TestMediaQueryListListener* impl) -{ - if (!impl) - return v8::Null(); - return V8TestMediaQueryListListener::wrap(impl); -} -inline v8::Handle<v8::Value> toV8(PassRefPtr< TestMediaQueryListListener > impl) -{ - return toV8(impl.get()); -} -} - -#endif // V8TestMediaQueryListListener_h diff --git a/WebCore/bindings/scripts/test/V8/V8TestObj.cpp b/WebCore/bindings/scripts/test/V8/V8TestObj.cpp deleted file mode 100644 index 7a759a3..0000000 --- a/WebCore/bindings/scripts/test/V8/V8TestObj.cpp +++ /dev/null @@ -1,1392 +0,0 @@ -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include "config.h" -#include "V8TestObj.h" - -#include "ExceptionCode.h" -#include "HTMLNames.h" -#include "IDBBindingUtilities.h" -#include "IDBKey.h" -#include "OptionsObject.h" -#include "RuntimeEnabledFeatures.h" -#include "ScriptArguments.h" -#include "ScriptCallStack.h" -#include "ScriptCallStackFactory.h" -#include "SerializedScriptValue.h" -#include "V8Binding.h" -#include "V8BindingMacros.h" -#include "V8BindingState.h" -#include "V8DOMWrapper.h" -#include "V8IsolatedContext.h" -#include "V8Proxy.h" -#include "V8TestCallback.h" -#include "V8int.h" -#include "V8log.h" -#include <wtf/GetPtr.h> -#include <wtf/RefCounted.h> -#include <wtf/RefPtr.h> - -namespace WebCore { - -WrapperTypeInfo V8TestObj::info = { V8TestObj::GetTemplate, V8TestObj::derefObject, 0 }; - -namespace TestObjInternal { - -template <typename T> void V8_USE(T) { } - -static v8::Handle<v8::Value> readOnlyIntAttrAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.readOnlyIntAttr._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8::Integer::New(imp->readOnlyIntAttr()); -} - -static v8::Handle<v8::Value> readOnlyStringAttrAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.readOnlyStringAttr._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8String(imp->readOnlyStringAttr()); -} - -static v8::Handle<v8::Value> readOnlyTestObjAttrAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.readOnlyTestObjAttr._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - RefPtr<TestObj> result = imp->readOnlyTestObjAttr(); - v8::Handle<v8::Value> wrapper = result.get() ? getDOMObjectMap().get(result.get()) : v8::Handle<v8::Value>(); - if (wrapper.IsEmpty()) { - wrapper = toV8(result.get()); - if (!wrapper.IsEmpty()) - V8DOMWrapper::setHiddenReference(info.Holder(), wrapper); - } - return wrapper; -} - -static v8::Handle<v8::Value> shortAttrAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.shortAttr._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8::Integer::New(imp->shortAttr()); -} - -static void shortAttrAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.shortAttr._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - int v = toInt32(value); - imp->setShortAttr(v); - return; -} - -static v8::Handle<v8::Value> unsignedShortAttrAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.unsignedShortAttr._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8::Integer::New(imp->unsignedShortAttr()); -} - -static void unsignedShortAttrAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.unsignedShortAttr._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - int v = toUInt32(value); - imp->setUnsignedShortAttr(v); - return; -} - -static v8::Handle<v8::Value> intAttrAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.intAttr._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8::Integer::New(imp->intAttr()); -} - -static void intAttrAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.intAttr._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - int v = toInt32(value); - imp->setIntAttr(v); - return; -} - -static v8::Handle<v8::Value> longLongAttrAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.longLongAttr._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8::Number::New(static_cast<double>(imp->longLongAttr())); -} - -static void longLongAttrAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.longLongAttr._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - long long v = toInt64(value); - imp->setLongLongAttr(WTF::getPtr(v)); - return; -} - -static v8::Handle<v8::Value> unsignedLongLongAttrAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.unsignedLongLongAttr._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8::Number::New(static_cast<double>(imp->unsignedLongLongAttr())); -} - -static void unsignedLongLongAttrAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.unsignedLongLongAttr._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - unsigned long long v = toInt64(value); - imp->setUnsignedLongLongAttr(WTF::getPtr(v)); - return; -} - -static v8::Handle<v8::Value> stringAttrAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.stringAttr._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8String(imp->stringAttr()); -} - -static void stringAttrAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.stringAttr._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - STRING_TO_V8PARAMETER_EXCEPTION_BLOCK_VOID(V8Parameter<>, v, value); - imp->setStringAttr(v); - return; -} - -static v8::Handle<v8::Value> testObjAttrAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.testObjAttr._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return toV8(imp->testObjAttr()); -} - -static void testObjAttrAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.testObjAttr._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - TestObj* v = V8TestObj::HasInstance(value) ? V8TestObj::toNative(v8::Handle<v8::Object>::Cast(value)) : 0; - imp->setTestObjAttr(WTF::getPtr(v)); - return; -} - -static v8::Handle<v8::Value> XMLObjAttrAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.XMLObjAttr._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return toV8(imp->xmlObjAttr()); -} - -static void XMLObjAttrAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.XMLObjAttr._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - TestObj* v = V8TestObj::HasInstance(value) ? V8TestObj::toNative(v8::Handle<v8::Object>::Cast(value)) : 0; - imp->setXMLObjAttr(WTF::getPtr(v)); - return; -} - -static v8::Handle<v8::Value> createAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.create._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8Boolean(imp->isCreate()); -} - -static void createAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.create._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - bool v = value->BooleanValue(); - imp->setCreate(v); - return; -} - -static v8::Handle<v8::Value> reflectedStringAttrAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.reflectedStringAttr._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8String(imp->getAttribute(WebCore::HTMLNames::reflectedstringattrAttr)); -} - -static void reflectedStringAttrAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.reflectedStringAttr._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - STRING_TO_V8PARAMETER_EXCEPTION_BLOCK_VOID(V8Parameter<WithNullCheck>, v, value); - imp->setAttribute(WebCore::HTMLNames::reflectedstringattrAttr, v); - return; -} - -static v8::Handle<v8::Value> reflectedIntegralAttrAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.reflectedIntegralAttr._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8::Integer::New(imp->getIntegralAttribute(WebCore::HTMLNames::reflectedintegralattrAttr)); -} - -static void reflectedIntegralAttrAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.reflectedIntegralAttr._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - int v = toInt32(value); - imp->setIntegralAttribute(WebCore::HTMLNames::reflectedintegralattrAttr, v); - return; -} - -static v8::Handle<v8::Value> reflectedUnsignedIntegralAttrAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.reflectedUnsignedIntegralAttr._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8::Integer::NewFromUnsigned(imp->getUnsignedIntegralAttribute(WebCore::HTMLNames::reflectedunsignedintegralattrAttr)); -} - -static void reflectedUnsignedIntegralAttrAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.reflectedUnsignedIntegralAttr._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - unsigned v = toUInt32(value); - imp->setUnsignedIntegralAttribute(WebCore::HTMLNames::reflectedunsignedintegralattrAttr, v); - return; -} - -static v8::Handle<v8::Value> reflectedBooleanAttrAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.reflectedBooleanAttr._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8Boolean(imp->hasAttribute(WebCore::HTMLNames::reflectedbooleanattrAttr)); -} - -static void reflectedBooleanAttrAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.reflectedBooleanAttr._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - bool v = value->BooleanValue(); - imp->setBooleanAttribute(WebCore::HTMLNames::reflectedbooleanattrAttr, v); - return; -} - -static v8::Handle<v8::Value> reflectedURLAttrAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.reflectedURLAttr._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8String(imp->getURLAttribute(WebCore::HTMLNames::reflectedurlattrAttr)); -} - -static void reflectedURLAttrAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.reflectedURLAttr._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - STRING_TO_V8PARAMETER_EXCEPTION_BLOCK_VOID(V8Parameter<WithNullCheck>, v, value); - imp->setAttribute(WebCore::HTMLNames::reflectedurlattrAttr, v); - return; -} - -static v8::Handle<v8::Value> reflectedNonEmptyURLAttrAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.reflectedNonEmptyURLAttr._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8String(imp->getNonEmptyURLAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr)); -} - -static void reflectedNonEmptyURLAttrAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.reflectedNonEmptyURLAttr._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - STRING_TO_V8PARAMETER_EXCEPTION_BLOCK_VOID(V8Parameter<WithNullCheck>, v, value); - imp->setAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr, v); - return; -} - -static v8::Handle<v8::Value> reflectedStringAttrAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.reflectedStringAttr._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8String(imp->getAttribute(WebCore::HTMLNames::customContentStringAttrAttr)); -} - -static void reflectedStringAttrAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.reflectedStringAttr._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - STRING_TO_V8PARAMETER_EXCEPTION_BLOCK_VOID(V8Parameter<WithNullCheck>, v, value); - imp->setAttribute(WebCore::HTMLNames::customContentStringAttrAttr, v); - return; -} - -static v8::Handle<v8::Value> reflectedCustomIntegralAttrAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.reflectedCustomIntegralAttr._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8::Integer::New(imp->getIntegralAttribute(WebCore::HTMLNames::customContentIntegralAttrAttr)); -} - -static void reflectedCustomIntegralAttrAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.reflectedCustomIntegralAttr._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - int v = toInt32(value); - imp->setIntegralAttribute(WebCore::HTMLNames::customContentIntegralAttrAttr, v); - return; -} - -static v8::Handle<v8::Value> reflectedCustomBooleanAttrAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.reflectedCustomBooleanAttr._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8Boolean(imp->hasAttribute(WebCore::HTMLNames::customContentBooleanAttrAttr)); -} - -static void reflectedCustomBooleanAttrAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.reflectedCustomBooleanAttr._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - bool v = value->BooleanValue(); - imp->setBooleanAttribute(WebCore::HTMLNames::customContentBooleanAttrAttr, v); - return; -} - -static v8::Handle<v8::Value> reflectedCustomURLAttrAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.reflectedCustomURLAttr._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8String(imp->getURLAttribute(WebCore::HTMLNames::customContentURLAttrAttr)); -} - -static void reflectedCustomURLAttrAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.reflectedCustomURLAttr._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - STRING_TO_V8PARAMETER_EXCEPTION_BLOCK_VOID(V8Parameter<WithNullCheck>, v, value); - imp->setAttribute(WebCore::HTMLNames::customContentURLAttrAttr, v); - return; -} - -static v8::Handle<v8::Value> reflectedCustomNonEmptyURLAttrAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.reflectedCustomNonEmptyURLAttr._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8String(imp->getNonEmptyURLAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr)); -} - -static void reflectedCustomNonEmptyURLAttrAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.reflectedCustomNonEmptyURLAttr._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - STRING_TO_V8PARAMETER_EXCEPTION_BLOCK_VOID(V8Parameter<WithNullCheck>, v, value); - imp->setAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr, v); - return; -} - -static v8::Handle<v8::Value> attrWithGetterExceptionAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.attrWithGetterException._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - ExceptionCode ec = 0; - int v = imp->attrWithGetterException(ec); - if (UNLIKELY(ec)) { - V8Proxy::setDOMException(ec); - return v8::Handle<v8::Value>(); - } - return v8::Integer::New(v); -} - -static void attrWithGetterExceptionAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.attrWithGetterException._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - int v = toInt32(value); - ExceptionCode ec = 0; - imp->setAttrWithGetterException(v, ec); - if (UNLIKELY(ec)) - V8Proxy::setDOMException(ec); - return; -} - -static v8::Handle<v8::Value> attrWithSetterExceptionAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.attrWithSetterException._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8::Integer::New(imp->attrWithSetterException()); -} - -static void attrWithSetterExceptionAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.attrWithSetterException._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - int v = toInt32(value); - ExceptionCode ec = 0; - imp->setAttrWithSetterException(v, ec); - if (UNLIKELY(ec)) - V8Proxy::setDOMException(ec); - return; -} - -static v8::Handle<v8::Value> stringAttrWithGetterExceptionAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.stringAttrWithGetterException._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - ExceptionCode ec = 0; - String v = imp->stringAttrWithGetterException(ec); - if (UNLIKELY(ec)) { - V8Proxy::setDOMException(ec); - return v8::Handle<v8::Value>(); - } - return v8String(v); -} - -static void stringAttrWithGetterExceptionAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.stringAttrWithGetterException._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - STRING_TO_V8PARAMETER_EXCEPTION_BLOCK_VOID(V8Parameter<>, v, value); - ExceptionCode ec = 0; - imp->setStringAttrWithGetterException(v, ec); - if (UNLIKELY(ec)) - V8Proxy::setDOMException(ec); - return; -} - -static v8::Handle<v8::Value> stringAttrWithSetterExceptionAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.stringAttrWithSetterException._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8String(imp->stringAttrWithSetterException()); -} - -static void stringAttrWithSetterExceptionAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.stringAttrWithSetterException._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - STRING_TO_V8PARAMETER_EXCEPTION_BLOCK_VOID(V8Parameter<>, v, value); - ExceptionCode ec = 0; - imp->setStringAttrWithSetterException(v, ec); - if (UNLIKELY(ec)) - V8Proxy::setDOMException(ec); - return; -} - -static v8::Handle<v8::Value> scriptStringAttrAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.scriptStringAttr._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8StringOrNull(imp->scriptStringAttr()); -} - -#if ENABLE(Condition1) - -static v8::Handle<v8::Value> conditionalAttr1AttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.conditionalAttr1._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8::Integer::New(imp->conditionalAttr1()); -} - -#endif // ENABLE(Condition1) - -#if ENABLE(Condition1) - -static void conditionalAttr1AttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.conditionalAttr1._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - int v = toInt32(value); - imp->setConditionalAttr1(v); - return; -} - -#endif // ENABLE(Condition1) - -#if ENABLE(Condition1) && ENABLE(Condition2) - -static v8::Handle<v8::Value> conditionalAttr2AttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.conditionalAttr2._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8::Integer::New(imp->conditionalAttr2()); -} - -#endif // ENABLE(Condition1) && ENABLE(Condition2) - -#if ENABLE(Condition1) && ENABLE(Condition2) - -static void conditionalAttr2AttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.conditionalAttr2._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - int v = toInt32(value); - imp->setConditionalAttr2(v); - return; -} - -#endif // ENABLE(Condition1) && ENABLE(Condition2) - -#if ENABLE(Condition1) || ENABLE(Condition2) - -static v8::Handle<v8::Value> conditionalAttr3AttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.conditionalAttr3._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8::Integer::New(imp->conditionalAttr3()); -} - -#endif // ENABLE(Condition1) || ENABLE(Condition2) - -#if ENABLE(Condition1) || ENABLE(Condition2) - -static void conditionalAttr3AttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.conditionalAttr3._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - int v = toInt32(value); - imp->setConditionalAttr3(v); - return; -} - -#endif // ENABLE(Condition1) || ENABLE(Condition2) - -static v8::Handle<v8::Value> enabledAtRuntimeAttr1AttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.enabledAtRuntimeAttr1._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8::Integer::New(imp->enabledAtRuntimeAttr1()); -} - -static void enabledAtRuntimeAttr1AttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.enabledAtRuntimeAttr1._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - int v = toInt32(value); - imp->setEnabledAtRuntimeAttr1(v); - return; -} - -static v8::Handle<v8::Value> enabledAtRuntimeAttr2AttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.enabledAtRuntimeAttr2._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8::Integer::New(imp->enabledAtRuntimeAttr2()); -} - -static void enabledAtRuntimeAttr2AttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.enabledAtRuntimeAttr2._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - int v = toInt32(value); - imp->setEnabledAtRuntimeAttr2(v); - return; -} - -static v8::Handle<v8::Value> descriptionAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.description._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8::Integer::New(imp->description()); -} - -static v8::Handle<v8::Value> idAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.id._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8::Integer::New(imp->id()); -} - -static void idAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.id._set"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - int v = toInt32(value); - imp->setId(v); - return; -} - -static v8::Handle<v8::Value> hashAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) -{ - INC_STATS("DOM.TestObj.hash._get"); - TestObj* imp = V8TestObj::toNative(info.Holder()); - return v8String(imp->hash()); -} - -static v8::Handle<v8::Value> voidMethodCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.voidMethod"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - imp->voidMethod(); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> voidMethodWithArgsCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.voidMethodWithArgs"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - EXCEPTION_BLOCK(int, intArg, toInt32(args[0])); - STRING_TO_V8PARAMETER_EXCEPTION_BLOCK(V8Parameter<>, strArg, args[1]); - EXCEPTION_BLOCK(TestObj*, objArg, V8TestObj::HasInstance(args[2]) ? V8TestObj::toNative(v8::Handle<v8::Object>::Cast(args[2])) : 0); - imp->voidMethodWithArgs(intArg, strArg, objArg); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> intMethodCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.intMethod"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - return v8::Integer::New(imp->intMethod()); -} - -static v8::Handle<v8::Value> intMethodWithArgsCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.intMethodWithArgs"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - EXCEPTION_BLOCK(int, intArg, toInt32(args[0])); - STRING_TO_V8PARAMETER_EXCEPTION_BLOCK(V8Parameter<>, strArg, args[1]); - EXCEPTION_BLOCK(TestObj*, objArg, V8TestObj::HasInstance(args[2]) ? V8TestObj::toNative(v8::Handle<v8::Object>::Cast(args[2])) : 0); - return v8::Integer::New(imp->intMethodWithArgs(intArg, strArg, objArg)); -} - -static v8::Handle<v8::Value> objMethodCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.objMethod"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - return toV8(imp->objMethod()); -} - -static v8::Handle<v8::Value> objMethodWithArgsCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.objMethodWithArgs"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - EXCEPTION_BLOCK(int, intArg, toInt32(args[0])); - STRING_TO_V8PARAMETER_EXCEPTION_BLOCK(V8Parameter<>, strArg, args[1]); - EXCEPTION_BLOCK(TestObj*, objArg, V8TestObj::HasInstance(args[2]) ? V8TestObj::toNative(v8::Handle<v8::Object>::Cast(args[2])) : 0); - return toV8(imp->objMethodWithArgs(intArg, strArg, objArg)); -} - -static v8::Handle<v8::Value> methodThatRequiresAllArgsCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.methodThatRequiresAllArgs"); - if (args.Length() < 2) - return v8::Handle<v8::Value>(); - TestObj* imp = V8TestObj::toNative(args.Holder()); - STRING_TO_V8PARAMETER_EXCEPTION_BLOCK(V8Parameter<>, strArg, args[0]); - EXCEPTION_BLOCK(TestObj*, objArg, V8TestObj::HasInstance(args[1]) ? V8TestObj::toNative(v8::Handle<v8::Object>::Cast(args[1])) : 0); - return toV8(imp->methodThatRequiresAllArgs(strArg, objArg)); -} - -static v8::Handle<v8::Value> methodThatRequiresAllArgsAndThrowsCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.methodThatRequiresAllArgsAndThrows"); - if (args.Length() < 2) - return throwError("Not enough arguments", V8Proxy::SyntaxError); - TestObj* imp = V8TestObj::toNative(args.Holder()); - ExceptionCode ec = 0; - { - STRING_TO_V8PARAMETER_EXCEPTION_BLOCK(V8Parameter<>, strArg, args[0]); - EXCEPTION_BLOCK(TestObj*, objArg, V8TestObj::HasInstance(args[1]) ? V8TestObj::toNative(v8::Handle<v8::Object>::Cast(args[1])) : 0); - RefPtr<TestObj> result = imp->methodThatRequiresAllArgsAndThrows(strArg, objArg, ec); - if (UNLIKELY(ec)) - goto fail; - return toV8(result.release()); - } - fail: - V8Proxy::setDOMException(ec); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> serializedValueCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.serializedValue"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - bool serializedArgDidThrow = false; - RefPtr<SerializedScriptValue> serializedArg = SerializedScriptValue::create(args[0], serializedArgDidThrow); - if (serializedArgDidThrow) - return v8::Undefined(); - imp->serializedValue(serializedArg); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> idbKeyCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.idbKey"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - ExceptionCode ec = 0; - { - RefPtr<IDBKey> key = createIDBKeyFromValue(args[0]); - if (UNLIKELY(!key)) { - ec = TYPE_MISMATCH_ERR; - goto fail; - } - imp->idbKey(key); - return v8::Handle<v8::Value>(); - } - fail: - V8Proxy::setDOMException(ec); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> optionsObjectCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.optionsObject"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - EXCEPTION_BLOCK(OptionsObject, oo, args[0]); - if (args.Length() <= 1) { - imp->optionsObject(oo); - return v8::Handle<v8::Value>(); - } - EXCEPTION_BLOCK(OptionsObject, ooo, args[1]); - imp->optionsObject(oo, ooo); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> methodWithExceptionCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.methodWithException"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - ExceptionCode ec = 0; - { - imp->methodWithException(ec); - if (UNLIKELY(ec)) - goto fail; - return v8::Handle<v8::Value>(); - } - fail: - V8Proxy::setDOMException(ec); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> customArgsAndExceptionCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.customArgsAndException"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - ExceptionCode ec = 0; - { - RefPtr<ScriptArguments> scriptArguments(createScriptArguments(args, 1)); - size_t maxStackSize = imp->shouldCaptureFullStackTrace() ? ScriptCallStack::maxCallStackSizeToCapture : 1; - RefPtr<ScriptCallStack> callStack(createScriptCallStack(maxStackSize)); - if (!callStack) - return v8::Undefined(); - EXCEPTION_BLOCK(log*, intArg, V8log::HasInstance(args[0]) ? V8log::toNative(v8::Handle<v8::Object>::Cast(args[0])) : 0); - imp->customArgsAndException(intArg, scriptArguments, callStack, ec); - if (UNLIKELY(ec)) - goto fail; - return v8::Handle<v8::Value>(); - } - fail: - V8Proxy::setDOMException(ec); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> addEventListenerCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.addEventListener()"); - RefPtr<EventListener> listener = V8DOMWrapper::getEventListener(args[1], false, ListenerFindOrCreate); - if (listener) { - V8TestObj::toNative(args.Holder())->addEventListener(v8ValueToAtomicWebCoreString(args[0]), listener, args[2]->BooleanValue()); - createHiddenDependency(args.Holder(), args[1], V8TestObj::eventListenerCacheIndex); - } - return v8::Undefined(); -} - -static v8::Handle<v8::Value> removeEventListenerCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.removeEventListener()"); - RefPtr<EventListener> listener = V8DOMWrapper::getEventListener(args[1], false, ListenerFindOnly); - if (listener) { - V8TestObj::toNative(args.Holder())->removeEventListener(v8ValueToAtomicWebCoreString(args[0]), listener.get(), args[2]->BooleanValue()); - removeHiddenDependency(args.Holder(), args[1], V8TestObj::eventListenerCacheIndex); - } - return v8::Undefined(); -} - -static v8::Handle<v8::Value> withDynamicFrameCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.withDynamicFrame"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - Frame* enteredFrame = V8Proxy::retrieveFrameForEnteredContext(); - if (!enteredFrame) - return v8::Undefined(); - imp->withDynamicFrame(enteredFrame); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> withDynamicFrameAndArgCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.withDynamicFrameAndArg"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - EXCEPTION_BLOCK(int, intArg, toInt32(args[0])); - Frame* enteredFrame = V8Proxy::retrieveFrameForEnteredContext(); - if (!enteredFrame) - return v8::Undefined(); - imp->withDynamicFrameAndArg(enteredFrame, intArg); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> withDynamicFrameAndOptionalArgCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.withDynamicFrameAndOptionalArg"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - EXCEPTION_BLOCK(int, intArg, toInt32(args[0])); - if (args.Length() <= 1) { - Frame* enteredFrame = V8Proxy::retrieveFrameForEnteredContext(); - if (!enteredFrame) - return v8::Undefined(); - imp->withDynamicFrameAndOptionalArg(enteredFrame, intArg); - return v8::Handle<v8::Value>(); - } - EXCEPTION_BLOCK(int, optionalArg, toInt32(args[1])); - Frame* enteredFrame = V8Proxy::retrieveFrameForEnteredContext(); - if (!enteredFrame) - return v8::Undefined(); - imp->withDynamicFrameAndOptionalArg(enteredFrame, intArg, optionalArg); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> withDynamicFrameAndUserGestureCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.withDynamicFrameAndUserGesture"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - EXCEPTION_BLOCK(int, intArg, toInt32(args[0])); - Frame* enteredFrame = V8Proxy::retrieveFrameForEnteredContext(); - if (!enteredFrame) - return v8::Undefined(); - imp->withDynamicFrameAndUserGesture(enteredFrame, intArg, processingUserGesture()); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> withDynamicFrameAndUserGestureASADCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.withDynamicFrameAndUserGestureASAD"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - EXCEPTION_BLOCK(int, intArg, toInt32(args[0])); - if (args.Length() <= 1) { - Frame* enteredFrame = V8Proxy::retrieveFrameForEnteredContext(); - if (!enteredFrame) - return v8::Undefined(); - imp->withDynamicFrameAndUserGestureASAD(enteredFrame, intArg, processingUserGesture()); - return v8::Handle<v8::Value>(); - } - EXCEPTION_BLOCK(int, optionalArg, toInt32(args[1])); - Frame* enteredFrame = V8Proxy::retrieveFrameForEnteredContext(); - if (!enteredFrame) - return v8::Undefined(); - imp->withDynamicFrameAndUserGestureASAD(enteredFrame, intArg, optionalArg, processingUserGesture()); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> withScriptStateVoidCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.withScriptStateVoid"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - EmptyScriptState state; - imp->withScriptStateVoid(&state); - if (state.hadException()) - return throwError(state.exception()); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> withScriptStateObjCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.withScriptStateObj"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - EmptyScriptState state; - RefPtr<TestObj> result = imp->withScriptStateObj(&state); - if (state.hadException()) - return throwError(state.exception()); - return toV8(result.release()); -} - -static v8::Handle<v8::Value> withScriptStateVoidExceptionCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.withScriptStateVoidException"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - ExceptionCode ec = 0; - { - EmptyScriptState state; - imp->withScriptStateVoidException(&state, ec); - if (UNLIKELY(ec)) - goto fail; - if (state.hadException()) - return throwError(state.exception()); - return v8::Handle<v8::Value>(); - } - fail: - V8Proxy::setDOMException(ec); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> withScriptStateObjExceptionCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.withScriptStateObjException"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - ExceptionCode ec = 0; - { - EmptyScriptState state; - RefPtr<TestObj> result = imp->withScriptStateObjException(&state, ec); - if (UNLIKELY(ec)) - goto fail; - if (state.hadException()) - return throwError(state.exception()); - return toV8(result.release()); - } - fail: - V8Proxy::setDOMException(ec); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> withScriptExecutionContextCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.withScriptExecutionContext"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - ScriptExecutionContext* scriptContext = getScriptExecutionContext(); - if (!scriptContext) - return v8::Undefined(); - imp->withScriptExecutionContext(scriptContext); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> methodWithOptionalArgCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.methodWithOptionalArg"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - if (args.Length() <= 0) { - imp->methodWithOptionalArg(); - return v8::Handle<v8::Value>(); - } - EXCEPTION_BLOCK(int, opt, toInt32(args[0])); - imp->methodWithOptionalArg(opt); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> methodWithNonOptionalArgAndOptionalArgCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.methodWithNonOptionalArgAndOptionalArg"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - EXCEPTION_BLOCK(int, nonOpt, toInt32(args[0])); - if (args.Length() <= 1) { - imp->methodWithNonOptionalArgAndOptionalArg(nonOpt); - return v8::Handle<v8::Value>(); - } - EXCEPTION_BLOCK(int, opt, toInt32(args[1])); - imp->methodWithNonOptionalArgAndOptionalArg(nonOpt, opt); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> methodWithNonOptionalArgAndTwoOptionalArgsCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.methodWithNonOptionalArgAndTwoOptionalArgs"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - EXCEPTION_BLOCK(int, nonOpt, toInt32(args[0])); - if (args.Length() <= 1) { - imp->methodWithNonOptionalArgAndTwoOptionalArgs(nonOpt); - return v8::Handle<v8::Value>(); - } - EXCEPTION_BLOCK(int, opt1, toInt32(args[1])); - EXCEPTION_BLOCK(int, opt2, toInt32(args[2])); - imp->methodWithNonOptionalArgAndTwoOptionalArgs(nonOpt, opt1, opt2); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> methodWithCallbackArgCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.methodWithCallbackArg"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - if (args.Length() <= 0 || !args[0]->IsObject()) - return throwError(TYPE_MISMATCH_ERR); - RefPtr<TestCallback> callback = V8TestCallback::create(args[0], getScriptExecutionContext()); - imp->methodWithCallbackArg(callback); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> methodWithNonCallbackArgAndCallbackArgCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.methodWithNonCallbackArgAndCallbackArg"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - EXCEPTION_BLOCK(int, nonCallback, toInt32(args[0])); - if (args.Length() <= 1 || !args[1]->IsObject()) - return throwError(TYPE_MISMATCH_ERR); - RefPtr<TestCallback> callback = V8TestCallback::create(args[1], getScriptExecutionContext()); - imp->methodWithNonCallbackArgAndCallbackArg(nonCallback, callback); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> methodWithCallbackAndOptionalArgCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.methodWithCallbackAndOptionalArg"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - RefPtr<TestCallback> callback; - if (args.Length() > 0 && !args[0]->IsNull() && !args[0]->IsUndefined()) { - if (!args[0]->IsObject()) - return throwError(TYPE_MISMATCH_ERR); - callback = V8TestCallback::create(args[0], getScriptExecutionContext()); - } - imp->methodWithCallbackAndOptionalArg(callback); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> overloadedMethod1Callback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.overloadedMethod1"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - EXCEPTION_BLOCK(TestObj*, objArg, V8TestObj::HasInstance(args[0]) ? V8TestObj::toNative(v8::Handle<v8::Object>::Cast(args[0])) : 0); - STRING_TO_V8PARAMETER_EXCEPTION_BLOCK(V8Parameter<>, strArg, args[1]); - imp->overloadedMethod(objArg, strArg); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> overloadedMethod2Callback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.overloadedMethod2"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - EXCEPTION_BLOCK(TestObj*, objArg, V8TestObj::HasInstance(args[0]) ? V8TestObj::toNative(v8::Handle<v8::Object>::Cast(args[0])) : 0); - if (args.Length() <= 1) { - imp->overloadedMethod(objArg); - return v8::Handle<v8::Value>(); - } - EXCEPTION_BLOCK(int, intArg, toInt32(args[1])); - imp->overloadedMethod(objArg, intArg); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> overloadedMethod3Callback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.overloadedMethod3"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - STRING_TO_V8PARAMETER_EXCEPTION_BLOCK(V8Parameter<>, strArg, args[0]); - imp->overloadedMethod(strArg); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> overloadedMethod4Callback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.overloadedMethod4"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - EXCEPTION_BLOCK(int, intArg, toInt32(args[0])); - imp->overloadedMethod(intArg); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> overloadedMethod5Callback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.overloadedMethod5"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - if (args.Length() <= 0 || !args[0]->IsObject()) - return throwError(TYPE_MISMATCH_ERR); - RefPtr<TestCallback> callback = V8TestCallback::create(args[0], getScriptExecutionContext()); - imp->overloadedMethod(callback); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> overloadedMethodCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.overloadedMethod"); - if ((args.Length() == 2 && (args[0]->IsNull() || V8TestObj::HasInstance(args[0])) && (args[1]->IsNull() || args[1]->IsUndefined() || args[1]->IsString() || args[1]->IsObject()))) - return overloadedMethod1Callback(args); - if ((args.Length() == 1 && (args[0]->IsNull() || V8TestObj::HasInstance(args[0]))) || (args.Length() == 2 && (args[0]->IsNull() || V8TestObj::HasInstance(args[0])))) - return overloadedMethod2Callback(args); - if ((args.Length() == 1 && (args[0]->IsNull() || args[0]->IsUndefined() || args[0]->IsString() || args[0]->IsObject()))) - return overloadedMethod3Callback(args); - if (args.Length() == 1) - return overloadedMethod4Callback(args); - if ((args.Length() == 1 && (args[0]->IsNull() || args[0]->IsObject()))) - return overloadedMethod5Callback(args); - V8Proxy::throwTypeError(); - return notHandledByInterceptor(); -} - -static v8::Handle<v8::Value> classMethodCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.classMethod"); - TestObj::classMethod(); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> classMethodWithOptionalCallback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.classMethodWithOptional"); - if (args.Length() <= 0) { - return v8::Integer::New(TestObj::classMethodWithOptional()); - } - EXCEPTION_BLOCK(int, arg, toInt32(args[0])); - return v8::Integer::New(TestObj::classMethodWithOptional(arg)); -} - -static v8::Handle<v8::Value> enabledAtRuntimeMethod1Callback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.enabledAtRuntimeMethod1"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - EXCEPTION_BLOCK(int, intArg, V8int::HasInstance(args[0]) ? V8int::toNative(v8::Handle<v8::Object>::Cast(args[0])) : 0); - imp->enabledAtRuntimeMethod1(intArg); - return v8::Handle<v8::Value>(); -} - -static v8::Handle<v8::Value> enabledAtRuntimeMethod2Callback(const v8::Arguments& args) -{ - INC_STATS("DOM.TestObj.enabledAtRuntimeMethod2"); - TestObj* imp = V8TestObj::toNative(args.Holder()); - EXCEPTION_BLOCK(int, intArg, V8int::HasInstance(args[0]) ? V8int::toNative(v8::Handle<v8::Object>::Cast(args[0])) : 0); - imp->enabledAtRuntimeMethod2(intArg); - return v8::Handle<v8::Value>(); -} - -} // namespace TestObjInternal - -static const BatchedAttribute TestObjAttrs[] = { - // Attribute 'readOnlyIntAttr' (Type: 'readonly attribute' ExtAttr: '') - {"readOnlyIntAttr", TestObjInternal::readOnlyIntAttrAttrGetter, 0, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'readOnlyStringAttr' (Type: 'readonly attribute' ExtAttr: '') - {"readOnlyStringAttr", TestObjInternal::readOnlyStringAttrAttrGetter, 0, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'readOnlyTestObjAttr' (Type: 'readonly attribute' ExtAttr: '') - {"readOnlyTestObjAttr", TestObjInternal::readOnlyTestObjAttrAttrGetter, 0, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'shortAttr' (Type: 'attribute' ExtAttr: '') - {"shortAttr", TestObjInternal::shortAttrAttrGetter, TestObjInternal::shortAttrAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'unsignedShortAttr' (Type: 'attribute' ExtAttr: '') - {"unsignedShortAttr", TestObjInternal::unsignedShortAttrAttrGetter, TestObjInternal::unsignedShortAttrAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'intAttr' (Type: 'attribute' ExtAttr: '') - {"intAttr", TestObjInternal::intAttrAttrGetter, TestObjInternal::intAttrAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'longLongAttr' (Type: 'attribute' ExtAttr: '') - {"longLongAttr", TestObjInternal::longLongAttrAttrGetter, TestObjInternal::longLongAttrAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'unsignedLongLongAttr' (Type: 'attribute' ExtAttr: '') - {"unsignedLongLongAttr", TestObjInternal::unsignedLongLongAttrAttrGetter, TestObjInternal::unsignedLongLongAttrAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'stringAttr' (Type: 'attribute' ExtAttr: '') - {"stringAttr", TestObjInternal::stringAttrAttrGetter, TestObjInternal::stringAttrAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'testObjAttr' (Type: 'attribute' ExtAttr: '') - {"testObjAttr", TestObjInternal::testObjAttrAttrGetter, TestObjInternal::testObjAttrAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'XMLObjAttr' (Type: 'attribute' ExtAttr: '') - {"XMLObjAttr", TestObjInternal::XMLObjAttrAttrGetter, TestObjInternal::XMLObjAttrAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'create' (Type: 'attribute' ExtAttr: '') - {"create", TestObjInternal::createAttrGetter, TestObjInternal::createAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'reflectedStringAttr' (Type: 'attribute' ExtAttr: 'Reflect') - {"reflectedStringAttr", TestObjInternal::reflectedStringAttrAttrGetter, TestObjInternal::reflectedStringAttrAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'reflectedIntegralAttr' (Type: 'attribute' ExtAttr: 'Reflect') - {"reflectedIntegralAttr", TestObjInternal::reflectedIntegralAttrAttrGetter, TestObjInternal::reflectedIntegralAttrAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'reflectedUnsignedIntegralAttr' (Type: 'attribute' ExtAttr: 'Reflect') - {"reflectedUnsignedIntegralAttr", TestObjInternal::reflectedUnsignedIntegralAttrAttrGetter, TestObjInternal::reflectedUnsignedIntegralAttrAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'reflectedBooleanAttr' (Type: 'attribute' ExtAttr: 'Reflect') - {"reflectedBooleanAttr", TestObjInternal::reflectedBooleanAttrAttrGetter, TestObjInternal::reflectedBooleanAttrAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'reflectedURLAttr' (Type: 'attribute' ExtAttr: 'URL Reflect') - {"reflectedURLAttr", TestObjInternal::reflectedURLAttrAttrGetter, TestObjInternal::reflectedURLAttrAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'reflectedNonEmptyURLAttr' (Type: 'attribute' ExtAttr: 'URL NonEmpty Reflect') - {"reflectedNonEmptyURLAttr", TestObjInternal::reflectedNonEmptyURLAttrAttrGetter, TestObjInternal::reflectedNonEmptyURLAttrAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'reflectedStringAttr' (Type: 'attribute' ExtAttr: 'Reflect') - {"reflectedStringAttr", TestObjInternal::reflectedStringAttrAttrGetter, TestObjInternal::reflectedStringAttrAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'reflectedCustomIntegralAttr' (Type: 'attribute' ExtAttr: 'Reflect') - {"reflectedCustomIntegralAttr", TestObjInternal::reflectedCustomIntegralAttrAttrGetter, TestObjInternal::reflectedCustomIntegralAttrAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'reflectedCustomBooleanAttr' (Type: 'attribute' ExtAttr: 'Reflect') - {"reflectedCustomBooleanAttr", TestObjInternal::reflectedCustomBooleanAttrAttrGetter, TestObjInternal::reflectedCustomBooleanAttrAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'reflectedCustomURLAttr' (Type: 'attribute' ExtAttr: 'URL Reflect') - {"reflectedCustomURLAttr", TestObjInternal::reflectedCustomURLAttrAttrGetter, TestObjInternal::reflectedCustomURLAttrAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'reflectedCustomNonEmptyURLAttr' (Type: 'attribute' ExtAttr: 'URL NonEmpty Reflect') - {"reflectedCustomNonEmptyURLAttr", TestObjInternal::reflectedCustomNonEmptyURLAttrAttrGetter, TestObjInternal::reflectedCustomNonEmptyURLAttrAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'attrWithGetterException' (Type: 'attribute' ExtAttr: '') - {"attrWithGetterException", TestObjInternal::attrWithGetterExceptionAttrGetter, TestObjInternal::attrWithGetterExceptionAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'attrWithSetterException' (Type: 'attribute' ExtAttr: '') - {"attrWithSetterException", TestObjInternal::attrWithSetterExceptionAttrGetter, TestObjInternal::attrWithSetterExceptionAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'stringAttrWithGetterException' (Type: 'attribute' ExtAttr: '') - {"stringAttrWithGetterException", TestObjInternal::stringAttrWithGetterExceptionAttrGetter, TestObjInternal::stringAttrWithGetterExceptionAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'stringAttrWithSetterException' (Type: 'attribute' ExtAttr: '') - {"stringAttrWithSetterException", TestObjInternal::stringAttrWithSetterExceptionAttrGetter, TestObjInternal::stringAttrWithSetterExceptionAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'customAttr' (Type: 'attribute' ExtAttr: 'Custom') - {"customAttr", V8TestObj::customAttrAccessorGetter, V8TestObj::customAttrAccessorSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'scriptStringAttr' (Type: 'readonly attribute' ExtAttr: 'ConvertScriptString') - {"scriptStringAttr", TestObjInternal::scriptStringAttrAttrGetter, 0, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, -#if ENABLE(Condition1) - // Attribute 'conditionalAttr1' (Type: 'attribute' ExtAttr: 'Conditional') - {"conditionalAttr1", TestObjInternal::conditionalAttr1AttrGetter, TestObjInternal::conditionalAttr1AttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, -#endif // ENABLE(Condition1) -#if ENABLE(Condition1) && ENABLE(Condition2) - // Attribute 'conditionalAttr2' (Type: 'attribute' ExtAttr: 'Conditional') - {"conditionalAttr2", TestObjInternal::conditionalAttr2AttrGetter, TestObjInternal::conditionalAttr2AttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, -#endif // ENABLE(Condition1) && ENABLE(Condition2) -#if ENABLE(Condition1) || ENABLE(Condition2) - // Attribute 'conditionalAttr3' (Type: 'attribute' ExtAttr: 'Conditional') - {"conditionalAttr3", TestObjInternal::conditionalAttr3AttrGetter, TestObjInternal::conditionalAttr3AttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, -#endif // ENABLE(Condition1) || ENABLE(Condition2) - // Attribute 'description' (Type: 'readonly attribute' ExtAttr: '') - {"description", TestObjInternal::descriptionAttrGetter, 0, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'id' (Type: 'attribute' ExtAttr: '') - {"id", TestObjInternal::idAttrGetter, TestObjInternal::idAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, - // Attribute 'hash' (Type: 'readonly attribute' ExtAttr: '') - {"hash", TestObjInternal::hashAttrGetter, 0, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, -}; -static const BatchedCallback TestObjCallbacks[] = { - {"voidMethod", TestObjInternal::voidMethodCallback}, - {"intMethod", TestObjInternal::intMethodCallback}, - {"objMethod", TestObjInternal::objMethodCallback}, - {"serializedValue", TestObjInternal::serializedValueCallback}, - {"idbKey", TestObjInternal::idbKeyCallback}, - {"optionsObject", TestObjInternal::optionsObjectCallback}, - {"methodWithException", TestObjInternal::methodWithExceptionCallback}, - {"customMethod", V8TestObj::customMethodCallback}, - {"customMethodWithArgs", V8TestObj::customMethodWithArgsCallback}, - {"addEventListener", TestObjInternal::addEventListenerCallback}, - {"removeEventListener", TestObjInternal::removeEventListenerCallback}, - {"withDynamicFrame", TestObjInternal::withDynamicFrameCallback}, - {"withDynamicFrameAndArg", TestObjInternal::withDynamicFrameAndArgCallback}, - {"withDynamicFrameAndOptionalArg", TestObjInternal::withDynamicFrameAndOptionalArgCallback}, - {"withDynamicFrameAndUserGesture", TestObjInternal::withDynamicFrameAndUserGestureCallback}, - {"withDynamicFrameAndUserGestureASAD", TestObjInternal::withDynamicFrameAndUserGestureASADCallback}, - {"withScriptStateVoid", TestObjInternal::withScriptStateVoidCallback}, - {"withScriptStateObj", TestObjInternal::withScriptStateObjCallback}, - {"withScriptStateVoidException", TestObjInternal::withScriptStateVoidExceptionCallback}, - {"withScriptStateObjException", TestObjInternal::withScriptStateObjExceptionCallback}, - {"withScriptExecutionContext", TestObjInternal::withScriptExecutionContextCallback}, - {"methodWithOptionalArg", TestObjInternal::methodWithOptionalArgCallback}, - {"methodWithNonOptionalArgAndOptionalArg", TestObjInternal::methodWithNonOptionalArgAndOptionalArgCallback}, - {"methodWithNonOptionalArgAndTwoOptionalArgs", TestObjInternal::methodWithNonOptionalArgAndTwoOptionalArgsCallback}, - {"methodWithCallbackArg", TestObjInternal::methodWithCallbackArgCallback}, - {"methodWithNonCallbackArgAndCallbackArg", TestObjInternal::methodWithNonCallbackArgAndCallbackArgCallback}, - {"methodWithCallbackAndOptionalArg", TestObjInternal::methodWithCallbackAndOptionalArgCallback}, - {"overloadedMethod", TestObjInternal::overloadedMethodCallback}, -}; -static const BatchedConstant TestObjConsts[] = { - {"CONST_VALUE_0", static_cast<signed int>(0)}, - {"CONST_VALUE_1", static_cast<signed int>(1)}, - {"CONST_VALUE_2", static_cast<signed int>(2)}, - {"CONST_VALUE_4", static_cast<signed int>(4)}, - {"CONST_VALUE_8", static_cast<signed int>(8)}, - {"CONST_VALUE_9", static_cast<signed int>(-1)}, - {"CONST_VALUE_10", static_cast<signed int>("my constant string")}, - {"CONST_VALUE_11", static_cast<signed int>(0xffffffff)}, - {"CONST_VALUE_12", static_cast<signed int>(0x01)}, - {"CONST_VALUE_13", static_cast<signed int>(0X20)}, - {"CONST_VALUE_14", static_cast<signed int>(0x1abc)}, -}; - -COMPILE_ASSERT(0 == TestObj::CONST_VALUE_0, TestObjEnumCONST_VALUE_0IsWrongUseDontCheckEnums); -COMPILE_ASSERT(1 == TestObj::CONST_VALUE_1, TestObjEnumCONST_VALUE_1IsWrongUseDontCheckEnums); -COMPILE_ASSERT(2 == TestObj::CONST_VALUE_2, TestObjEnumCONST_VALUE_2IsWrongUseDontCheckEnums); -COMPILE_ASSERT(4 == TestObj::CONST_VALUE_4, TestObjEnumCONST_VALUE_4IsWrongUseDontCheckEnums); -COMPILE_ASSERT(8 == TestObj::CONST_VALUE_8, TestObjEnumCONST_VALUE_8IsWrongUseDontCheckEnums); -COMPILE_ASSERT(-1 == TestObj::CONST_VALUE_9, TestObjEnumCONST_VALUE_9IsWrongUseDontCheckEnums); -COMPILE_ASSERT("my constant string" == TestObj::CONST_VALUE_10, TestObjEnumCONST_VALUE_10IsWrongUseDontCheckEnums); -COMPILE_ASSERT(0xffffffff == TestObj::CONST_VALUE_11, TestObjEnumCONST_VALUE_11IsWrongUseDontCheckEnums); -COMPILE_ASSERT(0x01 == TestObj::CONST_VALUE_12, TestObjEnumCONST_VALUE_12IsWrongUseDontCheckEnums); -COMPILE_ASSERT(0X20 == TestObj::CONST_VALUE_13, TestObjEnumCONST_VALUE_13IsWrongUseDontCheckEnums); -COMPILE_ASSERT(0x1abc == TestObj::CONST_VALUE_14, TestObjEnumCONST_VALUE_14IsWrongUseDontCheckEnums); - -static v8::Persistent<v8::FunctionTemplate> ConfigureV8TestObjTemplate(v8::Persistent<v8::FunctionTemplate> desc) -{ - v8::Local<v8::Signature> defaultSignature = configureTemplate(desc, "TestObj", v8::Persistent<v8::FunctionTemplate>(), V8TestObj::internalFieldCount, - TestObjAttrs, WTF_ARRAY_LENGTH(TestObjAttrs), - TestObjCallbacks, WTF_ARRAY_LENGTH(TestObjCallbacks)); - v8::Local<v8::ObjectTemplate> instance = desc->InstanceTemplate(); - v8::Local<v8::ObjectTemplate> proto = desc->PrototypeTemplate(); - - if (RuntimeEnabledFeatures::enabledAtRuntimeAttr1Enabled()) { - static const BatchedAttribute attrData =\ - // Attribute 'enabledAtRuntimeAttr1' (Type: 'attribute' ExtAttr: 'EnabledAtRuntime') - {"enabledAtRuntimeAttr1", TestObjInternal::enabledAtRuntimeAttr1AttrGetter, TestObjInternal::enabledAtRuntimeAttr1AttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}; - configureAttribute(instance, proto, attrData); - } - if (RuntimeEnabledFeatures::featureNameEnabled()) { - static const BatchedAttribute attrData =\ - // Attribute 'enabledAtRuntimeAttr2' (Type: 'attribute' ExtAttr: 'EnabledAtRuntime') - {"enabledAtRuntimeAttr2", TestObjInternal::enabledAtRuntimeAttr2AttrGetter, TestObjInternal::enabledAtRuntimeAttr2AttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}; - configureAttribute(instance, proto, attrData); - } - - // Custom Signature 'voidMethodWithArgs' - const int voidMethodWithArgsArgc = 3; - v8::Handle<v8::FunctionTemplate> voidMethodWithArgsArgv[voidMethodWithArgsArgc] = { v8::Handle<v8::FunctionTemplate>(), v8::Handle<v8::FunctionTemplate>(), V8TestObj::GetRawTemplate() }; - v8::Handle<v8::Signature> voidMethodWithArgsSignature = v8::Signature::New(desc, voidMethodWithArgsArgc, voidMethodWithArgsArgv); - proto->Set(v8::String::New("voidMethodWithArgs"), v8::FunctionTemplate::New(TestObjInternal::voidMethodWithArgsCallback, v8::Handle<v8::Value>(), voidMethodWithArgsSignature)); - - // Custom Signature 'intMethodWithArgs' - const int intMethodWithArgsArgc = 3; - v8::Handle<v8::FunctionTemplate> intMethodWithArgsArgv[intMethodWithArgsArgc] = { v8::Handle<v8::FunctionTemplate>(), v8::Handle<v8::FunctionTemplate>(), V8TestObj::GetRawTemplate() }; - v8::Handle<v8::Signature> intMethodWithArgsSignature = v8::Signature::New(desc, intMethodWithArgsArgc, intMethodWithArgsArgv); - proto->Set(v8::String::New("intMethodWithArgs"), v8::FunctionTemplate::New(TestObjInternal::intMethodWithArgsCallback, v8::Handle<v8::Value>(), intMethodWithArgsSignature)); - - // Custom Signature 'objMethodWithArgs' - const int objMethodWithArgsArgc = 3; - v8::Handle<v8::FunctionTemplate> objMethodWithArgsArgv[objMethodWithArgsArgc] = { v8::Handle<v8::FunctionTemplate>(), v8::Handle<v8::FunctionTemplate>(), V8TestObj::GetRawTemplate() }; - v8::Handle<v8::Signature> objMethodWithArgsSignature = v8::Signature::New(desc, objMethodWithArgsArgc, objMethodWithArgsArgv); - proto->Set(v8::String::New("objMethodWithArgs"), v8::FunctionTemplate::New(TestObjInternal::objMethodWithArgsCallback, v8::Handle<v8::Value>(), objMethodWithArgsSignature)); - - // Custom Signature 'methodThatRequiresAllArgs' - const int methodThatRequiresAllArgsArgc = 2; - v8::Handle<v8::FunctionTemplate> methodThatRequiresAllArgsArgv[methodThatRequiresAllArgsArgc] = { v8::Handle<v8::FunctionTemplate>(), V8TestObj::GetRawTemplate() }; - v8::Handle<v8::Signature> methodThatRequiresAllArgsSignature = v8::Signature::New(desc, methodThatRequiresAllArgsArgc, methodThatRequiresAllArgsArgv); - proto->Set(v8::String::New("methodThatRequiresAllArgs"), v8::FunctionTemplate::New(TestObjInternal::methodThatRequiresAllArgsCallback, v8::Handle<v8::Value>(), methodThatRequiresAllArgsSignature)); - - // Custom Signature 'methodThatRequiresAllArgsAndThrows' - const int methodThatRequiresAllArgsAndThrowsArgc = 2; - v8::Handle<v8::FunctionTemplate> methodThatRequiresAllArgsAndThrowsArgv[methodThatRequiresAllArgsAndThrowsArgc] = { v8::Handle<v8::FunctionTemplate>(), V8TestObj::GetRawTemplate() }; - v8::Handle<v8::Signature> methodThatRequiresAllArgsAndThrowsSignature = v8::Signature::New(desc, methodThatRequiresAllArgsAndThrowsArgc, methodThatRequiresAllArgsAndThrowsArgv); - proto->Set(v8::String::New("methodThatRequiresAllArgsAndThrows"), v8::FunctionTemplate::New(TestObjInternal::methodThatRequiresAllArgsAndThrowsCallback, v8::Handle<v8::Value>(), methodThatRequiresAllArgsAndThrowsSignature)); - - // Custom Signature 'customArgsAndException' - const int customArgsAndExceptionArgc = 1; - v8::Handle<v8::FunctionTemplate> customArgsAndExceptionArgv[customArgsAndExceptionArgc] = { V8log::GetRawTemplate() }; - v8::Handle<v8::Signature> customArgsAndExceptionSignature = v8::Signature::New(desc, customArgsAndExceptionArgc, customArgsAndExceptionArgv); - proto->Set(v8::String::New("customArgsAndException"), v8::FunctionTemplate::New(TestObjInternal::customArgsAndExceptionCallback, v8::Handle<v8::Value>(), customArgsAndExceptionSignature)); - desc->Set(v8::String::New("classMethod"), v8::FunctionTemplate::New(TestObjInternal::classMethodCallback, v8::Handle<v8::Value>(), v8::Local<v8::Signature>())); - desc->Set(v8::String::New("classMethodWithOptional"), v8::FunctionTemplate::New(TestObjInternal::classMethodWithOptionalCallback, v8::Handle<v8::Value>(), v8::Local<v8::Signature>())); - if (RuntimeEnabledFeatures::enabledAtRuntimeMethod1Enabled()) - proto->Set(v8::String::New("enabledAtRuntimeMethod1"), v8::FunctionTemplate::New(TestObjInternal::enabledAtRuntimeMethod1Callback, v8::Handle<v8::Value>(), defaultSignature)); - if (RuntimeEnabledFeatures::featureNameEnabled()) - proto->Set(v8::String::New("enabledAtRuntimeMethod2"), v8::FunctionTemplate::New(TestObjInternal::enabledAtRuntimeMethod2Callback, v8::Handle<v8::Value>(), defaultSignature)); - batchConfigureConstants(desc, proto, TestObjConsts, WTF_ARRAY_LENGTH(TestObjConsts)); - - // Custom toString template - desc->Set(getToStringName(), getToStringTemplate()); - return desc; -} - -v8::Persistent<v8::FunctionTemplate> V8TestObj::GetRawTemplate() -{ - static v8::Persistent<v8::FunctionTemplate> V8TestObjRawCache = createRawTemplate(); - return V8TestObjRawCache; -} - -v8::Persistent<v8::FunctionTemplate> V8TestObj::GetTemplate() -{ - static v8::Persistent<v8::FunctionTemplate> V8TestObjCache = ConfigureV8TestObjTemplate(GetRawTemplate()); - return V8TestObjCache; -} - -bool V8TestObj::HasInstance(v8::Handle<v8::Value> value) -{ - return GetRawTemplate()->HasInstance(value); -} - - -v8::Handle<v8::Object> V8TestObj::wrapSlow(TestObj* impl) -{ - v8::Handle<v8::Object> wrapper; - V8Proxy* proxy = 0; - wrapper = V8DOMWrapper::instantiateV8Object(proxy, &info, impl); - if (wrapper.IsEmpty()) - return wrapper; - - impl->ref(); - getDOMObjectMap().set(impl, v8::Persistent<v8::Object>::New(wrapper)); - return wrapper; -} - -void V8TestObj::derefObject(void* object) -{ - static_cast<TestObj*>(object)->deref(); -} - -} // namespace WebCore diff --git a/WebCore/bindings/scripts/test/V8/V8TestObj.h b/WebCore/bindings/scripts/test/V8/V8TestObj.h deleted file mode 100644 index 1e60488..0000000 --- a/WebCore/bindings/scripts/test/V8/V8TestObj.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - This file is part of the WebKit open source project. - This file has been generated by generate-bindings.pl. DO NOT MODIFY! - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#ifndef V8TestObj_h -#define V8TestObj_h - -#include "TestObj.h" -#include "V8DOMWrapper.h" -#include "WrapperTypeInfo.h" -#include "wtf/text/StringHash.h" -#include <v8.h> -#include <wtf/HashMap.h> - -namespace WebCore { - -class V8TestObj { - -public: - static bool HasInstance(v8::Handle<v8::Value> value); - static v8::Persistent<v8::FunctionTemplate> GetRawTemplate(); - static v8::Persistent<v8::FunctionTemplate> GetTemplate(); - static TestObj* toNative(v8::Handle<v8::Object> object) - { - return reinterpret_cast<TestObj*>(object->GetPointerFromInternalField(v8DOMWrapperObjectIndex)); - } - inline static v8::Handle<v8::Object> wrap(TestObj*); - static void derefObject(void*); - static WrapperTypeInfo info; - static v8::Handle<v8::Value> customMethodCallback(const v8::Arguments&); - static v8::Handle<v8::Value> customMethodWithArgsCallback(const v8::Arguments&); - static v8::Handle<v8::Value> customAttrAccessorGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info); - static void customAttrAccessorSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info); - static const int internalFieldCount = v8DefaultWrapperInternalFieldCount + 0; -private: - static v8::Handle<v8::Object> wrapSlow(TestObj*); -}; - - -v8::Handle<v8::Object> V8TestObj::wrap(TestObj* impl) -{ - v8::Handle<v8::Object> wrapper = getDOMObjectMap().get(impl); - if (!wrapper.IsEmpty()) - return wrapper; - return V8TestObj::wrapSlow(impl); -} - -inline v8::Handle<v8::Value> toV8(TestObj* impl) -{ - if (!impl) - return v8::Null(); - return V8TestObj::wrap(impl); -} -inline v8::Handle<v8::Value> toV8(PassRefPtr< TestObj > impl) -{ - return toV8(impl.get()); -} -} - -#endif // V8TestObj_h |