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

Side by Side Diff: Source/bindings/scripts/CodeGeneratorV8.pm

Issue 14456006: Fixes to make scripts generate includes with paths. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Copyright (C) 2005, 2006 Nikolas Zimmermann <zimmermann@kde.org> 1 # Copyright (C) 2005, 2006 Nikolas Zimmermann <zimmermann@kde.org>
2 # Copyright (C) 2006 Anders Carlsson <andersca@mac.com> 2 # Copyright (C) 2006 Anders Carlsson <andersca@mac.com>
3 # Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com> 3 # Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
4 # Copyright (C) 2006 Alexey Proskuryakov <ap@webkit.org> 4 # Copyright (C) 2006 Alexey Proskuryakov <ap@webkit.org>
5 # Copyright (C) 2006 Apple Computer, Inc. 5 # Copyright (C) 2006 Apple Computer, Inc.
6 # Copyright (C) 2007, 2008, 2009, 2012 Google Inc. 6 # Copyright (C) 2007, 2008, 2009, 2012 Google Inc.
7 # Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au> 7 # Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au>
8 # Copyright (C) Research In Motion Limited 2010. All rights reserved. 8 # Copyright (C) Research In Motion Limited 2010. All rights reserved.
9 # Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) 9 # Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
10 # Copyright (C) 2012 Ericsson AB. All rights reserved. 10 # Copyright (C) 2012 Ericsson AB. All rights reserved.
(...skipping 11 matching lines...) Expand all
22 # You should have received a copy of the GNU Library General Public License 22 # You should have received a copy of the GNU Library General Public License
23 # along with this library; see the file COPYING.LIB. If not, write to 23 # along with this library; see the file COPYING.LIB. If not, write to
24 # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 24 # the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
25 # Boston, MA 02111-1307, USA. 25 # Boston, MA 02111-1307, USA.
26 # 26 #
27 27
28 package CodeGeneratorV8; 28 package CodeGeneratorV8;
29 29
30 use strict; 30 use strict;
31 31
32 use idltopath;
33
32 my $codeGenerator; 34 my $codeGenerator;
33 35
34 36
35 my @headerContent = (); 37 my @headerContent = ();
36 my @implContentHeader = (); 38 my @implContentHeader = ();
37 my @implContent = (); 39 my @implContent = ();
38 my @implContentInternals = (); 40 my @implContentInternals = ();
39 my %implIncludes = (); 41 my %implIncludes = ();
40 my %headerIncludes = (); 42 my %headerIncludes = ();
41 43
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 if ($codeGenerator->IsTypedArrayType($type)) { 140 if ($codeGenerator->IsTypedArrayType($type)) {
139 AddToImplIncludes("wtf/${type}.h"); 141 AddToImplIncludes("wtf/${type}.h");
140 } 142 }
141 if (!$codeGenerator->IsPrimitiveType($type) and !$codeGenerator->IsStringTyp e($type) and !$codeGenerator->SkipIncludeHeader($type) and $type ne "Date") { 143 if (!$codeGenerator->IsPrimitiveType($type) and !$codeGenerator->IsStringTyp e($type) and !$codeGenerator->SkipIncludeHeader($type) and $type ne "Date") {
142 # default, include the same named file 144 # default, include the same named file
143 AddToImplIncludes(GetV8HeaderName(${type})); 145 AddToImplIncludes(GetV8HeaderName(${type}));
144 146
145 if ($type =~ /SVGPathSeg/) { 147 if ($type =~ /SVGPathSeg/) {
146 my $joinedName = $type; 148 my $joinedName = $type;
147 $joinedName =~ s/Abs|Rel//; 149 $joinedName =~ s/Abs|Rel//;
148 AddToImplIncludes("${joinedName}.h"); 150 AddToImplIncludes("core/svg/${joinedName}.h");
149 } 151 }
150 } 152 }
151 153
152 # additional includes (things needed to compile the bindings but not the hea der) 154 # additional includes (things needed to compile the bindings but not the hea der)
153 155
154 if ($type eq "CanvasRenderingContext2D") { 156 if ($type eq "CanvasRenderingContext2D") {
155 AddToImplIncludes("CanvasGradient.h"); 157 AddToImplIncludes("core/html/canvas/CanvasGradient.h");
156 AddToImplIncludes("CanvasPattern.h"); 158 AddToImplIncludes("core/html/canvas/CanvasPattern.h");
157 AddToImplIncludes("CanvasStyle.h"); 159 AddToImplIncludes("core/html/canvas/CanvasStyle.h");
158 } 160 }
159 161
160 if ($type eq "CanvasGradient" or $type eq "XPathNSResolver") { 162 if ($type eq "CanvasGradient" or $type eq "XPathNSResolver") {
161 AddToImplIncludes("wtf/text/WTFString.h"); 163 AddToImplIncludes("wtf/text/WTFString.h");
162 } 164 }
163 165
164 if ($type eq "CSSStyleSheet" or $type eq "StyleSheet") { 166 if ($type eq "CSSStyleSheet" or $type eq "StyleSheet") {
165 AddToImplIncludes("CSSImportRule.h"); 167 AddToImplIncludes("core/css/CSSImportRule.h");
166 } 168 }
167 169
168 if ($type eq "CSSStyleDeclaration") { 170 if ($type eq "CSSStyleDeclaration") {
169 AddToImplIncludes("StylePropertySet.h"); 171 AddToImplIncludes("core/css/StylePropertySet.h");
170 } 172 }
171 173
172 if ($type eq "Plugin" or $type eq "PluginArray" or $type eq "MimeTypeArray") { 174 if ($type eq "Plugin" or $type eq "PluginArray" or $type eq "MimeTypeArray") {
173 # So we can get String -> AtomicString conversion for namedItem(). 175 # So we can get String -> AtomicString conversion for namedItem().
174 AddToImplIncludes("wtf/text/AtomicString.h"); 176 AddToImplIncludes("wtf/text/AtomicString.h");
175 } 177 }
176 } 178 }
177 179
178 sub NeedsCustomOpaqueRootForGC 180 sub NeedsCustomOpaqueRootForGC
179 { 181 {
(...skipping 26 matching lines...) Expand all
206 void* V8${interfaceName}::opaqueRootForGC(void* object, v8::Persistent<v8::Objec t> wrapper, v8::Isolate* isolate) 208 void* V8${interfaceName}::opaqueRootForGC(void* object, v8::Persistent<v8::Objec t> wrapper, v8::Isolate* isolate)
207 { 209 {
208 ASSERT(!wrapper.IsIndependent(isolate)); 210 ASSERT(!wrapper.IsIndependent(isolate));
209 ${interfaceName}* impl = static_cast<${interfaceName}*>(object); 211 ${interfaceName}* impl = static_cast<${interfaceName}*>(object);
210 END 212 END
211 if (GetGenerateIsReachable($interface) eq "ImplDocument" || 213 if (GetGenerateIsReachable($interface) eq "ImplDocument" ||
212 GetGenerateIsReachable($interface) eq "ImplElementRoot" || 214 GetGenerateIsReachable($interface) eq "ImplElementRoot" ||
213 GetGenerateIsReachable($interface) eq "ImplOwnerRoot" || 215 GetGenerateIsReachable($interface) eq "ImplOwnerRoot" ||
214 GetGenerateIsReachable($interface) eq "ImplOwnerNodeRoot") { 216 GetGenerateIsReachable($interface) eq "ImplOwnerNodeRoot") {
215 217
216 $implIncludes{"V8GCController.h"} = 1; 218 $implIncludes{"bindings/v8/V8GCController.h"} = 1;
217 219
218 my $methodName; 220 my $methodName;
219 $methodName = "document" if (GetGenerateIsReachable($interface) eq "Impl Document"); 221 $methodName = "document" if (GetGenerateIsReachable($interface) eq "Impl Document");
220 $methodName = "element" if (GetGenerateIsReachable($interface) eq "ImplE lementRoot"); 222 $methodName = "element" if (GetGenerateIsReachable($interface) eq "ImplE lementRoot");
221 $methodName = "owner" if (GetGenerateIsReachable($interface) eq "ImplOwn erRoot"); 223 $methodName = "owner" if (GetGenerateIsReachable($interface) eq "ImplOwn erRoot");
222 $methodName = "ownerNode" if (GetGenerateIsReachable($interface) eq "Imp lOwnerNodeRoot"); 224 $methodName = "ownerNode" if (GetGenerateIsReachable($interface) eq "Imp lOwnerNodeRoot");
223 225
224 $code .= <<END; 226 $code .= <<END;
225 if (Node* owner = impl->${methodName}()) 227 if (Node* owner = impl->${methodName}())
226 return V8GCController::opaqueRootForGC(owner, isolate); 228 return V8GCController::opaqueRootForGC(owner, isolate);
(...skipping 20 matching lines...) Expand all
247 249
248 $svgNativeType = $codeGenerator->GetSVGTypeNeedingTearOff($implType); 250 $svgNativeType = $codeGenerator->GetSVGTypeNeedingTearOff($implType);
249 return ($svgPropertyType, $svgListPropertyType, $svgNativeType) if not $svgN ativeType; 251 return ($svgPropertyType, $svgListPropertyType, $svgNativeType) if not $svgN ativeType;
250 252
251 # Append space to avoid compilation errors when using PassRefPtr<$svgNative Type> 253 # Append space to avoid compilation errors when using PassRefPtr<$svgNative Type>
252 $svgNativeType = "$svgNativeType "; 254 $svgNativeType = "$svgNativeType ";
253 255
254 my $svgWrappedNativeType = $codeGenerator->GetSVGWrappedTypeNeedingTearOff($ implType); 256 my $svgWrappedNativeType = $codeGenerator->GetSVGWrappedTypeNeedingTearOff($ implType);
255 if ($svgNativeType =~ /SVGPropertyTearOff/) { 257 if ($svgNativeType =~ /SVGPropertyTearOff/) {
256 $svgPropertyType = $svgWrappedNativeType; 258 $svgPropertyType = $svgWrappedNativeType;
257 AddToImplIncludes("SVGAnimatedPropertyTearOff.h"); 259 AddToImplIncludes("core/svg/properties/SVGAnimatedPropertyTearOff.h");
258 } elsif ($svgNativeType =~ /SVGListPropertyTearOff/ or $svgNativeType =~ /SV GStaticListPropertyTearOff/) { 260 } elsif ($svgNativeType =~ /SVGListPropertyTearOff/ or $svgNativeType =~ /SV GStaticListPropertyTearOff/) {
259 $svgListPropertyType = $svgWrappedNativeType; 261 $svgListPropertyType = $svgWrappedNativeType;
260 $headerIncludes{"SVGAnimatedListPropertyTearOff.h"} = 1; 262 $headerIncludes{"core/svg/properties/SVGAnimatedListPropertyTearOff.h"} = 1;
261 $headerIncludes{"SVGStaticListPropertyTearOff.h"} = 1; 263 $headerIncludes{"core/svg/properties/SVGStaticListPropertyTearOff.h"} = 1;
262 } elsif ($svgNativeType =~ /SVGTransformListPropertyTearOff/) { 264 } elsif ($svgNativeType =~ /SVGTransformListPropertyTearOff/) {
263 $svgListPropertyType = $svgWrappedNativeType; 265 $svgListPropertyType = $svgWrappedNativeType;
264 $headerIncludes{"SVGAnimatedListPropertyTearOff.h"} = 1; 266 $headerIncludes{"core/svg/properties/SVGAnimatedListPropertyTearOff.h"} = 1;
265 $headerIncludes{"SVGTransformListPropertyTearOff.h"} = 1; 267 $headerIncludes{"core/svg/properties/SVGTransformListPropertyTearOff.h"} = 1;
266 } elsif ($svgNativeType =~ /SVGPathSegListPropertyTearOff/) { 268 } elsif ($svgNativeType =~ /SVGPathSegListPropertyTearOff/) {
267 $svgListPropertyType = $svgWrappedNativeType; 269 $svgListPropertyType = $svgWrappedNativeType;
268 $headerIncludes{"SVGPathSegListPropertyTearOff.h"} = 1; 270 $headerIncludes{"core/svg/properties/SVGPathSegListPropertyTearOff.h"} = 1;
269 } 271 }
270 272
271 if ($svgPropertyType) { 273 if ($svgPropertyType) {
272 $svgPropertyType = "SVGPoint" if $svgPropertyType eq "FloatPoint"; 274 $svgPropertyType = "SVGPoint" if $svgPropertyType eq "FloatPoint";
273 } 275 }
274 276
275 return ($svgPropertyType, $svgListPropertyType, $svgNativeType); 277 return ($svgPropertyType, $svgListPropertyType, $svgNativeType);
276 } 278 }
277 279
278 sub GenerateHeader 280 sub GenerateHeader
(...skipping 17 matching lines...) Expand all
296 foreach (@{$interface->parents}) { 298 foreach (@{$interface->parents}) {
297 my $parent = $_; 299 my $parent = $_;
298 $headerIncludes{"V8${parent}.h"} = 1; 300 $headerIncludes{"V8${parent}.h"} = 1;
299 } 301 }
300 } 302 }
301 303
302 # - Add default header template 304 # - Add default header template
303 AddToHeader(GenerateHeaderContentHeader($interface)); 305 AddToHeader(GenerateHeaderContentHeader($interface));
304 306
305 $headerIncludes{"wtf/text/StringHash.h"} = 1; 307 $headerIncludes{"wtf/text/StringHash.h"} = 1;
306 $headerIncludes{"WrapperTypeInfo.h"} = 1; 308 $headerIncludes{"bindings/v8/WrapperTypeInfo.h"} = 1;
307 $headerIncludes{"V8Binding.h"} = 1; 309 $headerIncludes{"bindings/v8/V8Binding.h"} = 1;
308 $headerIncludes{"V8DOMWrapper.h"} = 1; 310 $headerIncludes{"bindings/v8/V8DOMWrapper.h"} = 1;
309 $headerIncludes{"wtf/HashMap.h"} = 1; 311 $headerIncludes{"wtf/HashMap.h"} = 1;
310 $headerIncludes{"v8.h"} = 1; 312 $headerIncludes{"v8.h"} = 1;
311 313
312 my $headerClassInclude = GetHeaderClassInclude($interfaceName); 314 my $headerClassInclude = GetHeaderClassInclude($interfaceName);
313 $headerIncludes{$headerClassInclude} = 1 if $headerClassInclude ne ""; 315 $headerIncludes{$headerClassInclude} = 1 if $headerClassInclude ne "";
314 316
315 my ($svgPropertyType, $svgListPropertyType, $svgNativeType) = GetSVGProperty Types($interfaceName); 317 my ($svgPropertyType, $svgListPropertyType, $svgNativeType) = GetSVGProperty Types($interfaceName);
316 318
317 foreach my $headerInclude (sort keys(%headerIncludes)) { 319 foreach my $headerInclude (sort keys(%headerIncludes)) {
318 if ($headerInclude =~ /wtf|v8\.h/) { 320 if ($headerInclude =~ /wtf|v8\.h/) {
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after
676 678
677 my @customInternalFields = (); 679 my @customInternalFields = ();
678 # Event listeners on DOM nodes are explicitly supported in the GC controller . 680 # Event listeners on DOM nodes are explicitly supported in the GC controller .
679 if (!$codeGenerator->InheritsInterface($interface, "Node") && 681 if (!$codeGenerator->InheritsInterface($interface, "Node") &&
680 $codeGenerator->InheritsExtendedAttribute($interface, "EventTarget")) { 682 $codeGenerator->InheritsExtendedAttribute($interface, "EventTarget")) {
681 push(@customInternalFields, "eventListenerCacheIndex"); 683 push(@customInternalFields, "eventListenerCacheIndex");
682 } 684 }
683 return @customInternalFields; 685 return @customInternalFields;
684 } 686 }
685 687
688 sub mapInterfaceToIncludePath
689 {
690 my $interface = shift;
691
692 return idlToPath($interface);
693 }
694
686 sub GetHeaderClassInclude 695 sub GetHeaderClassInclude
687 { 696 {
688 my $v8InterfaceName = shift; 697 my $v8InterfaceName = shift;
689 if ($v8InterfaceName =~ /SVGPathSeg/) { 698 if ($v8InterfaceName =~ /SVGPathSeg/) {
690 $v8InterfaceName =~ s/Abs|Rel//; 699 $v8InterfaceName =~ s/Abs|Rel//;
691 } 700 }
692 return "wtf/${v8InterfaceName}.h" if $codeGenerator->IsTypedArrayType($v8Int erfaceName); 701 return "wtf/${v8InterfaceName}.h" if $codeGenerator->IsTypedArrayType($v8Int erfaceName);
693 return "" if ($codeGenerator->SkipIncludeHeader($v8InterfaceName)); 702 return "" if ($codeGenerator->SkipIncludeHeader($v8InterfaceName));
694 return "${v8InterfaceName}.h"; 703 my $interfacepath = mapInterfaceToIncludePath($v8InterfaceName);
704 return "${interfacepath}${v8InterfaceName}.h";
695 } 705 }
696 706
697 sub GenerateHeaderCustomInternalFieldIndices 707 sub GenerateHeaderCustomInternalFieldIndices
698 { 708 {
699 my $interface = shift; 709 my $interface = shift;
700 my @customInternalFields = GetInternalFields($interface); 710 my @customInternalFields = GetInternalFields($interface);
701 my $customFieldCounter = 0; 711 my $customFieldCounter = 0;
702 foreach my $customInternalField (@customInternalFields) { 712 foreach my $customInternalField (@customInternalFields) {
703 AddToHeader(<<END); 713 AddToHeader(<<END);
704 static const int ${customInternalField} = v8DefaultWrapperInternalFieldCount + ${customFieldCounter}; 714 static const int ${customInternalField} = v8DefaultWrapperInternalFieldCount + ${customFieldCounter};
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
869 my $v8InterfaceName = "V8" . $interfaceName; 879 my $v8InterfaceName = "V8" . $interfaceName;
870 my $funcName = $function->signature->name; 880 my $funcName = $function->signature->name;
871 881
872 my $signature = "v8::Signature::New(V8PerIsolateData::from(info.GetIsolate() )->rawTemplate(&" . $v8InterfaceName . "::info, currentWorldType))"; 882 my $signature = "v8::Signature::New(V8PerIsolateData::from(info.GetIsolate() )->rawTemplate(&" . $v8InterfaceName . "::info, currentWorldType))";
873 if ($function->signature->extendedAttributes->{"DoNotCheckSignature"}) { 883 if ($function->signature->extendedAttributes->{"DoNotCheckSignature"}) {
874 $signature = "v8::Local<v8::Signature>()"; 884 $signature = "v8::Local<v8::Signature>()";
875 } 885 }
876 886
877 my $newTemplateParams = "${interfaceName}V8Internal::${funcName}MethodCallba ck, v8Undefined(), $signature"; 887 my $newTemplateParams = "${interfaceName}V8Internal::${funcName}MethodCallba ck, v8Undefined(), $signature";
878 888
879 AddToImplIncludes("Frame.h"); 889 AddToImplIncludes("core/page/Frame.h");
880 AddToImplContentInternals(<<END); 890 AddToImplContentInternals(<<END);
881 static v8::Handle<v8::Value> ${funcName}AttrGetter(v8::Local<v8::String> name, c onst v8::AccessorInfo& info) 891 static v8::Handle<v8::Value> ${funcName}AttrGetter(v8::Local<v8::String> name, c onst v8::AccessorInfo& info)
882 { 892 {
883 // This is only for getting a unique pointer which we can pass to privateTem plate. 893 // This is only for getting a unique pointer which we can pass to privateTem plate.
884 static const char* privateTemplateUniqueKey = "${funcName}PrivateTemplate"; 894 static const char* privateTemplateUniqueKey = "${funcName}PrivateTemplate";
885 WrapperWorldType currentWorldType = worldType(info.GetIsolate()); 895 WrapperWorldType currentWorldType = worldType(info.GetIsolate());
886 V8PerIsolateData* data = V8PerIsolateData::from(info.GetIsolate()); 896 V8PerIsolateData* data = V8PerIsolateData::from(info.GetIsolate());
887 v8::Persistent<v8::FunctionTemplate> privateTemplate = data->privateTemplate (currentWorldType, &privateTemplateUniqueKey, $newTemplateParams); 897 v8::Persistent<v8::FunctionTemplate> privateTemplate = data->privateTemplate (currentWorldType, &privateTemplateUniqueKey, $newTemplateParams);
888 898
889 v8::Handle<v8::Object> holder = info.This()->FindInstanceInPrototypeChain(${ v8InterfaceName}::GetTemplate(info.GetIsolate(), currentWorldType)); 899 v8::Handle<v8::Object> holder = info.This()->FindInstanceInPrototypeChain(${ v8InterfaceName}::GetTemplate(info.GetIsolate(), currentWorldType));
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
1132 } 1142 }
1133 1143
1134 # Generate security checks if necessary 1144 # Generate security checks if necessary
1135 if ($attribute->signature->extendedAttributes->{"CheckSecurityForNode"}) { 1145 if ($attribute->signature->extendedAttributes->{"CheckSecurityForNode"}) {
1136 $code .= " if (!BindingSecurity::shouldAllowAccessToNode(BindingState ::instance(), imp->" . $attribute->signature->name . "()))\n return v8::H andle<v8::Value>(v8Null(info.GetIsolate()));\n\n"; 1146 $code .= " if (!BindingSecurity::shouldAllowAccessToNode(BindingState ::instance(), imp->" . $attribute->signature->name . "()))\n return v8::H andle<v8::Value>(v8Null(info.GetIsolate()));\n\n";
1137 } 1147 }
1138 1148
1139 my $useExceptions = 1 if $attribute->signature->extendedAttributes->{"Getter RaisesException"}; 1149 my $useExceptions = 1 if $attribute->signature->extendedAttributes->{"Getter RaisesException"};
1140 my $isNullable = $attribute->signature->isNullable; 1150 my $isNullable = $attribute->signature->isNullable;
1141 if ($useExceptions) { 1151 if ($useExceptions) {
1142 AddToImplIncludes("ExceptionCode.h"); 1152 AddToImplIncludes("core/dom/ExceptionCode.h");
1143 $code .= " ExceptionCode ec = 0;\n"; 1153 $code .= " ExceptionCode ec = 0;\n";
1144 } 1154 }
1145 1155
1146 if ($isNullable) { 1156 if ($isNullable) {
1147 $code .= " bool isNull = false;\n"; 1157 $code .= " bool isNull = false;\n";
1148 } 1158 }
1149 1159
1150 my $returnType = $attribute->signature->type; 1160 my $returnType = $attribute->signature->type;
1151 my $getterString; 1161 my $getterString;
1152 1162
1153 if ($getterStringUsesImp) { 1163 if ($getterStringUsesImp) {
1154 my ($functionName, @arguments) = $codeGenerator->GetterExpression(\%impl Includes, $interfaceName, $attribute); 1164 my ($functionName, @arguments) = $codeGenerator->GetterExpression(\%impl Includes, $interfaceName, $attribute);
1155 push(@arguments, "isNull") if $isNullable; 1165 push(@arguments, "isNull") if $isNullable;
1156 push(@arguments, "ec") if $useExceptions; 1166 push(@arguments, "ec") if $useExceptions;
1157 if ($attribute->signature->extendedAttributes->{"ImplementedBy"}) { 1167 if ($attribute->signature->extendedAttributes->{"ImplementedBy"}) {
1158 my $implementedBy = $attribute->signature->extendedAttributes->{"Imp lementedBy"}; 1168 my $implementedBy = $attribute->signature->extendedAttributes->{"Imp lementedBy"};
1159 AddToImplIncludes("${implementedBy}.h"); 1169 my $implementedByPath = idlToPath($implementedBy);
1170 AddToImplIncludes("${implementedByPath}${implementedBy}.h");
1160 unshift(@arguments, "imp") if !$attribute->isStatic; 1171 unshift(@arguments, "imp") if !$attribute->isStatic;
1161 $functionName = "${implementedBy}::${functionName}"; 1172 $functionName = "${implementedBy}::${functionName}";
1162 } elsif ($attribute->isStatic) { 1173 } elsif ($attribute->isStatic) {
1163 $functionName = "${interfaceName}::${functionName}"; 1174 $functionName = "${interfaceName}::${functionName}";
1164 } else { 1175 } else {
1165 $functionName = "imp->${functionName}"; 1176 $functionName = "imp->${functionName}";
1166 } 1177 }
1167 my ($arg, $subCode) = GenerateCallWith($attribute->signature->extendedAt tributes->{"CallWith"}, " ", 0); 1178 my ($arg, $subCode) = GenerateCallWith($attribute->signature->extendedAt tributes->{"CallWith"}, " ", 0);
1168 $code .= $subCode; 1179 $code .= $subCode;
1169 unshift(@arguments, @$arg); 1180 unshift(@arguments, @$arg);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1215 if ((!$codeGenerator->InheritsInterface($interface, "Node") && $attrName ne "self" && IsWrapperType($returnType) && (IsReadonly($attribute) || $attribute->s ignature->extendedAttributes->{"Replaceable"} || $attrName eq "location") 1226 if ((!$codeGenerator->InheritsInterface($interface, "Node") && $attrName ne "self" && IsWrapperType($returnType) && (IsReadonly($attribute) || $attribute->s ignature->extendedAttributes->{"Replaceable"} || $attrName eq "location")
1216 && $returnType ne "EventTarget" && $returnType ne "SerializedScriptValu e" && $returnType ne "DOMWindow" 1227 && $returnType ne "EventTarget" && $returnType ne "SerializedScriptValu e" && $returnType ne "DOMWindow"
1217 && $returnType ne "MessagePortArray" 1228 && $returnType ne "MessagePortArray"
1218 && $returnType !~ /SVG/ && $returnType !~ /HTML/ && !IsDOMNodeType($ret urnType)) 1229 && $returnType !~ /SVG/ && $returnType !~ /HTML/ && !IsDOMNodeType($ret urnType))
1219 || $attribute->signature->extendedAttributes->{"CacheAttributeForGC"}) { 1230 || $attribute->signature->extendedAttributes->{"CacheAttributeForGC"}) {
1220 1231
1221 my $arrayType = $codeGenerator->GetArrayType($returnType); 1232 my $arrayType = $codeGenerator->GetArrayType($returnType);
1222 if ($arrayType) { 1233 if ($arrayType) {
1223 if (!$codeGenerator->SkipIncludeHeader($arrayType)) { 1234 if (!$codeGenerator->SkipIncludeHeader($arrayType)) {
1224 AddToImplIncludes("V8$arrayType.h"); 1235 AddToImplIncludes("V8$arrayType.h");
1225 AddToImplIncludes("$arrayType.h"); 1236 AddToImplIncludes("bindings/v8/$arrayType.h");
1226 } 1237 }
1227 $code .= " return v8Array(${getterString}, info.GetIsolate());\n" ; 1238 $code .= " return v8Array(${getterString}, info.GetIsolate());\n" ;
1228 $code .= "}\n\n"; 1239 $code .= "}\n\n";
1229 AddToImplContentInternals($code); 1240 AddToImplContentInternals($code);
1230 return; 1241 return;
1231 } 1242 }
1232 1243
1233 AddIncludesForType($returnType); 1244 AddIncludesForType($returnType);
1234 # Check for a wrapper in the wrapper cache. If there is one, we know tha t a hidden reference has already 1245 # Check for a wrapper in the wrapper cache. If there is one, we know tha t a hidden reference has already
1235 # been created. If we don't find a wrapper, we create both a wrapper and a hidden reference. 1246 # been created. If we don't find a wrapper, we create both a wrapper and a hidden reference.
(...skipping 15 matching lines...) Expand all
1251 return; 1262 return;
1252 } 1263 }
1253 1264
1254 if (($codeGenerator->IsSVGAnimatedType($interfaceName) or $interfaceName eq "SVGViewSpec") and $codeGenerator->IsSVGTypeNeedingTearOff($attrType)) { 1265 if (($codeGenerator->IsSVGAnimatedType($interfaceName) or $interfaceName eq "SVGViewSpec") and $codeGenerator->IsSVGTypeNeedingTearOff($attrType)) {
1255 AddToImplIncludes("V8$attrType.h"); 1266 AddToImplIncludes("V8$attrType.h");
1256 my $svgNativeType = $codeGenerator->GetSVGTypeNeedingTearOff($attrType); 1267 my $svgNativeType = $codeGenerator->GetSVGTypeNeedingTearOff($attrType);
1257 # Convert from abstract SVGProperty to real type, so the right toJS() me thod can be invoked. 1268 # Convert from abstract SVGProperty to real type, so the right toJS() me thod can be invoked.
1258 $code .= " return toV8Fast$forMainWorldSuffix(static_cast<$svgNativeT ype*>($expression), info, imp);\n"; 1269 $code .= " return toV8Fast$forMainWorldSuffix(static_cast<$svgNativeT ype*>($expression), info, imp);\n";
1259 } elsif ($codeGenerator->IsSVGTypeNeedingTearOff($attrType) and not $interfa ceName =~ /List$/) { 1270 } elsif ($codeGenerator->IsSVGTypeNeedingTearOff($attrType) and not $interfa ceName =~ /List$/) {
1260 AddToImplIncludes("V8$attrType.h"); 1271 AddToImplIncludes("V8$attrType.h");
1261 AddToImplIncludes("SVGPropertyTearOff.h"); 1272 AddToImplIncludes("core/svg/properties/SVGPropertyTearOff.h");
1262 my $tearOffType = $codeGenerator->GetSVGTypeNeedingTearOff($attrType); 1273 my $tearOffType = $codeGenerator->GetSVGTypeNeedingTearOff($attrType);
1263 my $wrappedValue; 1274 my $wrappedValue;
1264 if ($codeGenerator->IsSVGTypeWithWritablePropertiesNeedingTearOff($attrT ype) and not defined $attribute->signature->extendedAttributes->{"Immutable"}) { 1275 if ($codeGenerator->IsSVGTypeWithWritablePropertiesNeedingTearOff($attrT ype) and not defined $attribute->signature->extendedAttributes->{"Immutable"}) {
1265 my $getter = $expression; 1276 my $getter = $expression;
1266 $getter =~ s/imp->//; 1277 $getter =~ s/imp->//;
1267 $getter =~ s/\(\)//; 1278 $getter =~ s/\(\)//;
1268 1279
1269 my $updateMethod = "&${interfaceName}::update" . $codeGenerator->WK_ ucfirst($getter); 1280 my $updateMethod = "&${interfaceName}::update" . $codeGenerator->WK_ ucfirst($getter);
1270 1281
1271 my $selfIsTearOffType = $codeGenerator->IsSVGTypeNeedingTearOff($int erfaceName); 1282 my $selfIsTearOffType = $codeGenerator->IsSVGTypeNeedingTearOff($int erfaceName);
1272 if ($selfIsTearOffType) { 1283 if ($selfIsTearOffType) {
1273 AddToImplIncludes("SVGStaticPropertyWithParentTearOff.h"); 1284 AddToImplIncludes("core/svg/properties/SVGStaticPropertyWithPare ntTearOff.h");
1274 $tearOffType =~ s/SVGPropertyTearOff</SVGStaticPropertyWithParen tTearOff<$interfaceName, /; 1285 $tearOffType =~ s/SVGPropertyTearOff</SVGStaticPropertyWithParen tTearOff<$interfaceName, /;
1275 1286
1276 if ($expression =~ /matrix/ and $interfaceName eq "SVGTransform" ) { 1287 if ($expression =~ /matrix/ and $interfaceName eq "SVGTransform" ) {
1277 # SVGTransform offers a matrix() method for internal usage t hat returns an AffineTransform 1288 # SVGTransform offers a matrix() method for internal usage t hat returns an AffineTransform
1278 # and a svgMatrix() method returning a SVGMatrix, used for t he bindings. 1289 # and a svgMatrix() method returning a SVGMatrix, used for t he bindings.
1279 $expression =~ s/matrix/svgMatrix/; 1290 $expression =~ s/matrix/svgMatrix/;
1280 } 1291 }
1281 1292
1282 $wrappedValue = "WTF::getPtr(${tearOffType}::create(wrapper, $ex pression, $updateMethod))"; 1293 $wrappedValue = "WTF::getPtr(${tearOffType}::create(wrapper, $ex pression, $updateMethod))";
1283 } else { 1294 } else {
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
1346 { 1357 {
1347 my $interface = shift; 1358 my $interface = shift;
1348 my $interfaceName = $interface->name; 1359 my $interfaceName = $interface->name;
1349 1360
1350 my $code = ""; 1361 my $code = "";
1351 $code .= <<END; 1362 $code .= <<END;
1352 static void ${interfaceName}ReplaceableAttrSetter(v8::Local<v8::String> name, v8 ::Local<v8::Value> value, const v8::AccessorInfo& info) 1363 static void ${interfaceName}ReplaceableAttrSetter(v8::Local<v8::String> name, v8 ::Local<v8::Value> value, const v8::AccessorInfo& info)
1353 { 1364 {
1354 END 1365 END
1355 if ($interface->extendedAttributes->{"CheckSecurity"}) { 1366 if ($interface->extendedAttributes->{"CheckSecurity"}) {
1356 AddToImplIncludes("Frame.h"); 1367 AddToImplIncludes("core/page/Frame.h");
1357 $code .= <<END; 1368 $code .= <<END;
1358 ${interfaceName}* imp = V8${interfaceName}::toNative(info.Holder()); 1369 ${interfaceName}* imp = V8${interfaceName}::toNative(info.Holder());
1359 if (!BindingSecurity::shouldAllowAccessToFrame(BindingState::instance(), imp ->frame())) 1370 if (!BindingSecurity::shouldAllowAccessToFrame(BindingState::instance(), imp ->frame()))
1360 return; 1371 return;
1361 END 1372 END
1362 } 1373 }
1363 1374
1364 $code .= <<END; 1375 $code .= <<END;
1365 info.This()->ForceSet(name, value); 1376 info.This()->ForceSet(name, value);
1366 } 1377 }
1367 1378
1368 END 1379 END
1369 AddToImplContentInternals($code); 1380 AddToImplContentInternals($code);
1370 } 1381 }
1371 1382
1372 sub GenerateCustomElementInvocationScopeIfNeeded 1383 sub GenerateCustomElementInvocationScopeIfNeeded
1373 { 1384 {
1374 my $code = ""; 1385 my $code = "";
1375 my $ext = shift; 1386 my $ext = shift;
1376 1387
1377 if ($ext->{"DeliverCustomElementCallbacks"}) { 1388 if ($ext->{"DeliverCustomElementCallbacks"}) {
1378 if ($ext->{"Reflect"}) { 1389 if ($ext->{"Reflect"}) {
1379 die "IDL error: [Reflect] and [DeliverCustomElementCallbacks] cannot coexist yet"; 1390 die "IDL error: [Reflect] and [DeliverCustomElementCallbacks] cannot coexist yet";
1380 } 1391 }
1381 1392
1382 AddToImplIncludes("CustomElementRegistry.h", "CUSTOM_ELEMENTS"); 1393 AddToImplIncludes("core/dom/CustomElementRegistry.h", "CUSTOM_ELEMENTS") ;
1383 $code .= <<END; 1394 $code .= <<END;
1384 #if ENABLE(CUSTOM_ELEMENTS) 1395 #if ENABLE(CUSTOM_ELEMENTS)
1385 CustomElementRegistry::CallbackDeliveryScope deliveryScope; 1396 CustomElementRegistry::CallbackDeliveryScope deliveryScope;
1386 #endif 1397 #endif
1387 END 1398 END
1388 } 1399 }
1389 return $code; 1400 return $code;
1390 } 1401 }
1391 1402
1392 sub GenerateNormalAttrSetterCallback 1403 sub GenerateNormalAttrSetterCallback
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
1458 } 1469 }
1459 1470
1460 my $svgNativeType = $codeGenerator->GetSVGTypeNeedingTearOff($interfaceName) ; 1471 my $svgNativeType = $codeGenerator->GetSVGTypeNeedingTearOff($interfaceName) ;
1461 if ($svgNativeType) { 1472 if ($svgNativeType) {
1462 my $svgWrappedNativeType = $codeGenerator->GetSVGWrappedTypeNeedingTearO ff($interfaceName); 1473 my $svgWrappedNativeType = $codeGenerator->GetSVGWrappedTypeNeedingTearO ff($interfaceName);
1463 if ($svgWrappedNativeType =~ /List$/) { 1474 if ($svgWrappedNativeType =~ /List$/) {
1464 $code .= <<END; 1475 $code .= <<END;
1465 $svgNativeType* imp = ${v8InterfaceName}::toNative(info.Holder()); 1476 $svgNativeType* imp = ${v8InterfaceName}::toNative(info.Holder());
1466 END 1477 END
1467 } else { 1478 } else {
1468 AddToImplIncludes("ExceptionCode.h"); 1479 AddToImplIncludes("core/dom/ExceptionCode.h");
1469 $code .= " $svgNativeType* wrapper = ${v8InterfaceName}::toNative (info.Holder());\n"; 1480 $code .= " $svgNativeType* wrapper = ${v8InterfaceName}::toNative (info.Holder());\n";
1470 $code .= " if (wrapper->isReadOnly()) {\n"; 1481 $code .= " if (wrapper->isReadOnly()) {\n";
1471 $code .= " setDOMException(NO_MODIFICATION_ALLOWED_ERR, info. GetIsolate());\n"; 1482 $code .= " setDOMException(NO_MODIFICATION_ALLOWED_ERR, info. GetIsolate());\n";
1472 $code .= " return;\n"; 1483 $code .= " return;\n";
1473 $code .= " }\n"; 1484 $code .= " }\n";
1474 $code .= " $svgWrappedNativeType& impInstance = wrapper->property Reference();\n"; 1485 $code .= " $svgWrappedNativeType& impInstance = wrapper->property Reference();\n";
1475 $code .= " $svgWrappedNativeType* imp = &impInstance;\n"; 1486 $code .= " $svgWrappedNativeType* imp = &impInstance;\n";
1476 } 1487 }
1477 } elsif ($attrExt->{"OnProto"}) { 1488 } elsif ($attrExt->{"OnProto"}) {
1478 $code .= <<END; 1489 $code .= <<END;
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
1542 my $returnType = $attribute->signature->type; 1553 my $returnType = $attribute->signature->type;
1543 if ($codeGenerator->IsRefPtrType($returnType) && !$codeGenerator->GetArrayTy pe($returnType)) { 1554 if ($codeGenerator->IsRefPtrType($returnType) && !$codeGenerator->GetArrayTy pe($returnType)) {
1544 $expression = "WTF::getPtr(" . $expression . ")"; 1555 $expression = "WTF::getPtr(" . $expression . ")";
1545 } 1556 }
1546 1557
1547 $code .= GenerateCustomElementInvocationScopeIfNeeded($attribute->signature- >extendedAttributes); 1558 $code .= GenerateCustomElementInvocationScopeIfNeeded($attribute->signature- >extendedAttributes);
1548 1559
1549 my $useExceptions = 1 if $attribute->signature->extendedAttributes->{"Setter RaisesException"}; 1560 my $useExceptions = 1 if $attribute->signature->extendedAttributes->{"Setter RaisesException"};
1550 1561
1551 if ($useExceptions) { 1562 if ($useExceptions) {
1552 AddToImplIncludes("ExceptionCode.h"); 1563 AddToImplIncludes("core/dom/ExceptionCode.h");
1553 $code .= " ExceptionCode ec = 0;\n"; 1564 $code .= " ExceptionCode ec = 0;\n";
1554 } 1565 }
1555 1566
1556 if ($interfaceName eq "SVGNumber") { 1567 if ($interfaceName eq "SVGNumber") {
1557 $code .= " *imp = $expression;\n"; 1568 $code .= " *imp = $expression;\n";
1558 } else { 1569 } else {
1559 if ($attribute->signature->type eq "EventListener") { 1570 if ($attribute->signature->type eq "EventListener") {
1560 my $implSetterFunctionName = $codeGenerator->WK_ucfirst($attrName); 1571 my $implSetterFunctionName = $codeGenerator->WK_ucfirst($attrName);
1561 AddToImplIncludes("V8AbstractEventListener.h"); 1572 AddToImplIncludes("bindings/v8/V8AbstractEventListener.h");
1562 if (!$codeGenerator->InheritsInterface($interface, "Node")) { 1573 if (!$codeGenerator->InheritsInterface($interface, "Node")) {
1563 $code .= " transferHiddenDependency(info.Holder(), imp->$attr Name(), value, ${v8InterfaceName}::eventListenerCacheIndex, info.GetIsolate());\ n"; 1574 $code .= " transferHiddenDependency(info.Holder(), imp->$attr Name(), value, ${v8InterfaceName}::eventListenerCacheIndex, info.GetIsolate());\ n";
1564 } 1575 }
1565 AddToImplIncludes("V8EventListenerList.h"); 1576 AddToImplIncludes("bindings/v8/V8EventListenerList.h");
1566 if ($interfaceName eq "WorkerContext" and $attribute->signature->nam e eq "onerror") { 1577 if ($interfaceName eq "WorkerContext" and $attribute->signature->nam e eq "onerror") {
1567 AddToImplIncludes("V8WorkerContextErrorHandler.h"); 1578 AddToImplIncludes("bindings/v8/V8WorkerContextErrorHandler.h");
1568 $code .= " imp->set$implSetterFunctionName(V8EventListenerLis t::findOrCreateWrapper<V8WorkerContextErrorHandler>(value, true)"; 1579 $code .= " imp->set$implSetterFunctionName(V8EventListenerLis t::findOrCreateWrapper<V8WorkerContextErrorHandler>(value, true)";
1569 } elsif ($interfaceName eq "DOMWindow" and $attribute->signature->na me eq "onerror") { 1580 } elsif ($interfaceName eq "DOMWindow" and $attribute->signature->na me eq "onerror") {
1570 AddToImplIncludes("V8WindowErrorHandler.h"); 1581 AddToImplIncludes("bindings/v8/V8WindowErrorHandler.h");
1571 $code .= " imp->set$implSetterFunctionName(V8EventListenerLis t::findOrCreateWrapper<V8WindowErrorHandler>(value, true)"; 1582 $code .= " imp->set$implSetterFunctionName(V8EventListenerLis t::findOrCreateWrapper<V8WindowErrorHandler>(value, true)";
1572 } else { 1583 } else {
1573 $code .= " imp->set$implSetterFunctionName(V8EventListenerLis t::getEventListener(value, true, ListenerFindOrCreate)"; 1584 $code .= " imp->set$implSetterFunctionName(V8EventListenerLis t::getEventListener(value, true, ListenerFindOrCreate)";
1574 } 1585 }
1575 $code .= ", ec" if $useExceptions; 1586 $code .= ", ec" if $useExceptions;
1576 $code .= ");\n"; 1587 $code .= ");\n";
1577 } else { 1588 } else {
1578 my ($functionName, @arguments) = $codeGenerator->SetterExpression(\% implIncludes, $interfaceName, $attribute); 1589 my ($functionName, @arguments) = $codeGenerator->SetterExpression(\% implIncludes, $interfaceName, $attribute);
1579 push(@arguments, $expression); 1590 push(@arguments, $expression);
1580 push(@arguments, "ec") if $useExceptions; 1591 push(@arguments, "ec") if $useExceptions;
1581 if ($attribute->signature->extendedAttributes->{"ImplementedBy"}) { 1592 if ($attribute->signature->extendedAttributes->{"ImplementedBy"}) {
1582 my $implementedBy = $attribute->signature->extendedAttributes->{ "ImplementedBy"}; 1593 my $implementedBy = $attribute->signature->extendedAttributes->{ "ImplementedBy"};
1583 AddToImplIncludes("${implementedBy}.h"); 1594 my $implementedByPath = idlToPath($implementedBy);
1595 AddToImplIncludes("$implementedByPath${implementedBy}.h");
1584 unshift(@arguments, "imp") if !$attribute->isStatic; 1596 unshift(@arguments, "imp") if !$attribute->isStatic;
1585 $functionName = "${implementedBy}::${functionName}"; 1597 $functionName = "${implementedBy}::${functionName}";
1586 } elsif ($attribute->isStatic) { 1598 } elsif ($attribute->isStatic) {
1587 $functionName = "${interfaceName}::${functionName}"; 1599 $functionName = "${interfaceName}::${functionName}";
1588 } else { 1600 } else {
1589 $functionName = "imp->${functionName}"; 1601 $functionName = "imp->${functionName}";
1590 } 1602 }
1591 my ($arg, $subCode) = GenerateCallWith($attribute->signature->extend edAttributes->{"CallWith"}, " ", 1); 1603 my ($arg, $subCode) = GenerateCallWith($attribute->signature->extend edAttributes->{"CallWith"}, " ", 1);
1592 $code .= $subCode; 1604 $code .= $subCode;
1593 unshift(@arguments, @$arg); 1605 unshift(@arguments, @$arg);
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
1822 1834
1823 END 1835 END
1824 $code .= "#endif // ${conditionalString}\n\n" if $conditionalString; 1836 $code .= "#endif // ${conditionalString}\n\n" if $conditionalString;
1825 AddToImplContentInternals($code); 1837 AddToImplContentInternals($code);
1826 return; 1838 return;
1827 } 1839 }
1828 1840
1829 $code .= GenerateArgumentsCountCheck($function, $interface); 1841 $code .= GenerateArgumentsCountCheck($function, $interface);
1830 1842
1831 if ($name eq "set" and $interface->extendedAttributes->{"TypedArray"}) { 1843 if ($name eq "set" and $interface->extendedAttributes->{"TypedArray"}) {
1832 AddToImplIncludes("V8ArrayBufferViewCustom.h"); 1844 AddToImplIncludes("bindings/v8/custom/V8ArrayBufferViewCustom.h");
1833 $code .= <<END; 1845 $code .= <<END;
1834 return setWebGLArrayHelper<$interfaceName, ${v8InterfaceName}>(args); 1846 return setWebGLArrayHelper<$interfaceName, ${v8InterfaceName}>(args);
1835 } 1847 }
1836 1848
1837 END 1849 END
1838 AddToImplContentInternals($code); 1850 AddToImplContentInternals($code);
1839 return; 1851 return;
1840 } 1852 }
1841 1853
1842 my ($svgPropertyType, $svgListPropertyType, $svgNativeType) = GetSVGProperty Types($interfaceName); 1854 my ($svgPropertyType, $svgListPropertyType, $svgNativeType) = GetSVGProperty Types($interfaceName);
1843 1855
1844 if ($svgNativeType) { 1856 if ($svgNativeType) {
1845 my $nativeClassName = GetNativeType($interfaceName); 1857 my $nativeClassName = GetNativeType($interfaceName);
1846 if ($interfaceName =~ /List$/) { 1858 if ($interfaceName =~ /List$/) {
1847 $code .= " $nativeClassName imp = ${v8InterfaceName}::toNative(ar gs.Holder());\n"; 1859 $code .= " $nativeClassName imp = ${v8InterfaceName}::toNative(ar gs.Holder());\n";
1848 } else { 1860 } else {
1849 AddToImplIncludes("ExceptionCode.h"); 1861 AddToImplIncludes("core/dom/ExceptionCode.h");
1850 $code .= " $nativeClassName wrapper = ${v8InterfaceName}::toNativ e(args.Holder());\n"; 1862 $code .= " $nativeClassName wrapper = ${v8InterfaceName}::toNativ e(args.Holder());\n";
1851 $code .= " if (wrapper->isReadOnly())\n"; 1863 $code .= " if (wrapper->isReadOnly())\n";
1852 $code .= " return setDOMException(NO_MODIFICATION_ALLOWED_ERR , args.GetIsolate());\n"; 1864 $code .= " return setDOMException(NO_MODIFICATION_ALLOWED_ERR , args.GetIsolate());\n";
1853 my $svgWrappedNativeType = $codeGenerator->GetSVGWrappedTypeNeedingT earOff($interfaceName); 1865 my $svgWrappedNativeType = $codeGenerator->GetSVGWrappedTypeNeedingT earOff($interfaceName);
1854 $code .= " $svgWrappedNativeType& impInstance = wrapper->property Reference();\n"; 1866 $code .= " $svgWrappedNativeType& impInstance = wrapper->property Reference();\n";
1855 $code .= " $svgWrappedNativeType* imp = &impInstance;\n"; 1867 $code .= " $svgWrappedNativeType* imp = &impInstance;\n";
1856 } 1868 }
1857 } elsif (!$function->isStatic) { 1869 } elsif (!$function->isStatic) {
1858 $code .= <<END; 1870 $code .= <<END;
1859 ${interfaceName}* imp = ${v8InterfaceName}::toNative(args.Holder()); 1871 ${interfaceName}* imp = ${v8InterfaceName}::toNative(args.Holder());
1860 END 1872 END
1861 } 1873 }
1862 1874
1863 $code .= GenerateCustomElementInvocationScopeIfNeeded($funcExt); 1875 $code .= GenerateCustomElementInvocationScopeIfNeeded($funcExt);
1864 1876
1865 # Check domain security if needed 1877 # Check domain security if needed
1866 if ($interface->extendedAttributes->{"CheckSecurity"} && !$function->signatu re->extendedAttributes->{"DoNotCheckSecurity"}) { 1878 if ($interface->extendedAttributes->{"CheckSecurity"} && !$function->signatu re->extendedAttributes->{"DoNotCheckSecurity"}) {
1867 # We have not find real use cases yet. 1879 # We have not find real use cases yet.
1868 AddToImplIncludes("Frame.h"); 1880 AddToImplIncludes("core/page/Frame.h");
1869 $code .= <<END; 1881 $code .= <<END;
1870 if (!BindingSecurity::shouldAllowAccessToFrame(BindingState::instance(), imp ->frame())) 1882 if (!BindingSecurity::shouldAllowAccessToFrame(BindingState::instance(), imp ->frame()))
1871 return v8Undefined(); 1883 return v8Undefined();
1872 END 1884 END
1873 } 1885 }
1874 1886
1875 my $raisesExceptions = $function->signature->extendedAttributes->{"RaisesExc eption"}; 1887 my $raisesExceptions = $function->signature->extendedAttributes->{"RaisesExc eption"};
1876 if (!$raisesExceptions) { 1888 if (!$raisesExceptions) {
1877 foreach my $parameter (@{$function->parameters}) { 1889 foreach my $parameter (@{$function->parameters}) {
1878 if ((!$parameter->extendedAttributes->{"Callback"} and TypeCanFailCo nversion($parameter)) or $parameter->extendedAttributes->{"IsIndex"}) { 1890 if ((!$parameter->extendedAttributes->{"Callback"} and TypeCanFailCo nversion($parameter)) or $parameter->extendedAttributes->{"IsIndex"}) {
1879 $raisesExceptions = 1; 1891 $raisesExceptions = 1;
1880 } 1892 }
1881 } 1893 }
1882 } 1894 }
1883 1895
1884 if ($raisesExceptions) { 1896 if ($raisesExceptions) {
1885 AddToImplIncludes("ExceptionCode.h"); 1897 AddToImplIncludes("core/dom/ExceptionCode.h");
1886 $code .= " ExceptionCode ec = 0;\n"; 1898 $code .= " ExceptionCode ec = 0;\n";
1887 $code .= " {\n"; 1899 $code .= " {\n";
1888 # The brace here is needed to prevent the ensuing 'goto fail's from jump ing past constructors 1900 # The brace here is needed to prevent the ensuing 'goto fail's from jump ing past constructors
1889 # of objects (like Strings) declared later, causing compile errors. The block scope ends 1901 # of objects (like Strings) declared later, causing compile errors. The block scope ends
1890 # right before the label 'fail:'. 1902 # right before the label 'fail:'.
1891 } 1903 }
1892 1904
1893 if ($function->signature->extendedAttributes->{"CheckSecurityForNode"}) { 1905 if ($function->signature->extendedAttributes->{"CheckSecurityForNode"}) {
1894 $code .= " if (!BindingSecurity::shouldAllowAccessToNode(BindingState ::instance(), imp->" . $function->signature->name . "(ec)))\n"; 1906 $code .= " if (!BindingSecurity::shouldAllowAccessToNode(BindingState ::instance(), imp->" . $function->signature->name . "(ec)))\n";
1895 $code .= " return v8::Handle<v8::Value>(v8Null(args.GetIsolate()) );\n"; 1907 $code .= " return v8::Handle<v8::Value>(v8Null(args.GetIsolate()) );\n";
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1930 $code .= $indent . "ScriptState& state = *currentState;\n"; 1942 $code .= $indent . "ScriptState& state = *currentState;\n";
1931 push(@callWithArgs, "&state"); 1943 push(@callWithArgs, "&state");
1932 } 1944 }
1933 if ($codeGenerator->ExtendedAttributeContains($callWith, "ScriptExecutionCon text")) { 1945 if ($codeGenerator->ExtendedAttributeContains($callWith, "ScriptExecutionCon text")) {
1934 $code .= $indent . "ScriptExecutionContext* scriptContext = getScriptExe cutionContext();\n"; 1946 $code .= $indent . "ScriptExecutionContext* scriptContext = getScriptExe cutionContext();\n";
1935 push(@callWithArgs, "scriptContext"); 1947 push(@callWithArgs, "scriptContext");
1936 } 1948 }
1937 if ($function and $codeGenerator->ExtendedAttributeContains($callWith, "Scri ptArguments")) { 1949 if ($function and $codeGenerator->ExtendedAttributeContains($callWith, "Scri ptArguments")) {
1938 $code .= $indent . "RefPtr<ScriptArguments> scriptArguments(createScript Arguments(args, " . @{$function->parameters} . "));\n"; 1950 $code .= $indent . "RefPtr<ScriptArguments> scriptArguments(createScript Arguments(args, " . @{$function->parameters} . "));\n";
1939 push(@callWithArgs, "scriptArguments.release()"); 1951 push(@callWithArgs, "scriptArguments.release()");
1940 AddToImplIncludes("ScriptArguments.h"); 1952 AddToImplIncludes("core/inspector/ScriptArguments.h");
1941 AddToImplIncludes("ScriptCallStackFactory.h"); 1953 AddToImplIncludes("bindings/v8/ScriptCallStackFactory.h");
1942 } 1954 }
1943 return ([@callWithArgs], $code); 1955 return ([@callWithArgs], $code);
1944 } 1956 }
1945 1957
1946 sub GenerateArgumentsCountCheck 1958 sub GenerateArgumentsCountCheck
1947 { 1959 {
1948 my $function = shift; 1960 my $function = shift;
1949 my $interface = shift; 1961 my $interface = shift;
1950 1962
1951 my $numMandatoryParams = 0; 1963 my $numMandatoryParams = 0;
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
2011 $parameterDefaultPolicy = "DefaultIsNullString"; 2023 $parameterDefaultPolicy = "DefaultIsNullString";
2012 } 2024 }
2013 2025
2014 my $parameterName = $parameter->name; 2026 my $parameterName = $parameter->name;
2015 if (GetIndexOf($parameterName, @paramTransferListNames) != -1) { 2027 if (GetIndexOf($parameterName, @paramTransferListNames) != -1) {
2016 $replacements{$parameterName} = "messagePortArray" . ucfirst($parame terName); 2028 $replacements{$parameterName} = "messagePortArray" . ucfirst($parame terName);
2017 $paramIndex++; 2029 $paramIndex++;
2018 next; 2030 next;
2019 } 2031 }
2020 2032
2021 AddToImplIncludes("ExceptionCode.h"); 2033 AddToImplIncludes("core/dom/ExceptionCode.h");
2022 if ($parameter->extendedAttributes->{"Callback"}) { 2034 if ($parameter->extendedAttributes->{"Callback"}) {
2023 my $v8InterfaceName = "V8" . $parameter->type; 2035 my $v8InterfaceName = "V8" . $parameter->type;
2024 AddToImplIncludes("$v8InterfaceName.h"); 2036 AddToImplIncludes("$v8InterfaceName.h");
2025 if ($parameter->isOptional) { 2037 if ($parameter->isOptional) {
2026 $parameterCheckString .= " RefPtr<" . $parameter->type . "> $ parameterName;\n"; 2038 $parameterCheckString .= " RefPtr<" . $parameter->type . "> $ parameterName;\n";
2027 $parameterCheckString .= " if (args.Length() > $paramIndex && !args[$paramIndex]->IsNull() && !args[$paramIndex]->IsUndefined()) {\n"; 2039 $parameterCheckString .= " if (args.Length() > $paramIndex && !args[$paramIndex]->IsNull() && !args[$paramIndex]->IsUndefined()) {\n";
2028 $parameterCheckString .= " if (!args[$paramIndex]->IsFunc tion())\n"; 2040 $parameterCheckString .= " if (!args[$paramIndex]->IsFunc tion())\n";
2029 $parameterCheckString .= " return throwTypeError(0, a rgs.GetIsolate());\n"; 2041 $parameterCheckString .= " return throwTypeError(0, a rgs.GetIsolate());\n";
2030 $parameterCheckString .= " $parameterName = ${v8Interface Name}::create(args[$paramIndex], getScriptExecutionContext());\n"; 2042 $parameterCheckString .= " $parameterName = ${v8Interface Name}::create(args[$paramIndex], getScriptExecutionContext());\n";
2031 $parameterCheckString .= " }\n"; 2043 $parameterCheckString .= " }\n";
2032 } else { 2044 } else {
2033 $parameterCheckString .= " if (args.Length() <= $paramIndex | | !args[$paramIndex]->IsFunction())\n"; 2045 $parameterCheckString .= " if (args.Length() <= $paramIndex | | !args[$paramIndex]->IsFunction())\n";
2034 $parameterCheckString .= " return throwTypeError(0, args. GetIsolate());\n"; 2046 $parameterCheckString .= " return throwTypeError(0, args. GetIsolate());\n";
2035 $parameterCheckString .= " RefPtr<" . $parameter->type . "> $ parameterName = ${v8InterfaceName}::create(args[$paramIndex], getScriptExecution Context());\n"; 2047 $parameterCheckString .= " RefPtr<" . $parameter->type . "> $ parameterName = ${v8InterfaceName}::create(args[$paramIndex], getScriptExecution Context());\n";
2036 } 2048 }
2037 } elsif ($parameter->extendedAttributes->{"Clamp"}) { 2049 } elsif ($parameter->extendedAttributes->{"Clamp"}) {
2038 my $nativeValue = "${parameterName}NativeValue"; 2050 my $nativeValue = "${parameterName}NativeValue";
2039 my $paramType = $parameter->type; 2051 my $paramType = $parameter->type;
2040 $parameterCheckString .= " $paramType $parameterName = 0;\n"; 2052 $parameterCheckString .= " $paramType $parameterName = 0;\n";
2041 $parameterCheckString .= " V8TRYCATCH(double, $nativeValue, a rgs[$paramIndex]->NumberValue());\n"; 2053 $parameterCheckString .= " V8TRYCATCH(double, $nativeValue, a rgs[$paramIndex]->NumberValue());\n";
2042 $parameterCheckString .= " if (!std::isnan($nativeValue))\n"; 2054 $parameterCheckString .= " if (!std::isnan($nativeValue))\n";
2043 $parameterCheckString .= " $parameterName = clampTo<$para mType>($nativeValue);\n"; 2055 $parameterCheckString .= " $parameterName = clampTo<$para mType>($nativeValue);\n";
2044 } elsif ($parameter->type eq "SerializedScriptValue") { 2056 } elsif ($parameter->type eq "SerializedScriptValue") {
2045 AddToImplIncludes("SerializedScriptValue.h"); 2057 AddToImplIncludes("bindings/v8/SerializedScriptValue.h");
2046 my $useTransferList = 0; 2058 my $useTransferList = 0;
2047 my $transferListName = ""; 2059 my $transferListName = "";
2048 my $TransferListName = ""; 2060 my $TransferListName = "";
2049 if ($parameter->extendedAttributes->{"TransferList"}) { 2061 if ($parameter->extendedAttributes->{"TransferList"}) {
2050 $transferListName = $parameter->extendedAttributes->{"TransferLi st"}; 2062 $transferListName = $parameter->extendedAttributes->{"TransferLi st"};
2051 push(@paramTransferListNames, $transferListName); 2063 push(@paramTransferListNames, $transferListName);
2052 2064
2053 my @allParameterNames = (); 2065 my @allParameterNames = ();
2054 foreach my $parameter (@{$function->parameters}) { 2066 foreach my $parameter (@{$function->parameters}) {
2055 push(@allParameterNames, $parameter->name); 2067 push(@allParameterNames, $parameter->name);
2056 } 2068 }
2057 my $transferListIndex = GetIndexOf($transferListName, @allParame terNames); 2069 my $transferListIndex = GetIndexOf($transferListName, @allParame terNames);
2058 if ($transferListIndex == -1) { 2070 if ($transferListIndex == -1) {
2059 die "IDL error: TransferList refers to a nonexistent argumen t"; 2071 die "IDL error: TransferList refers to a nonexistent argumen t";
2060 } 2072 }
2061 2073
2062 AddToImplIncludes("wtf/ArrayBuffer.h"); 2074 AddToImplIncludes("wtf/ArrayBuffer.h");
2063 AddToImplIncludes("MessagePort.h"); 2075 AddToImplIncludes("core/dom/MessagePort.h");
2064 $TransferListName = ucfirst($transferListName); 2076 $TransferListName = ucfirst($transferListName);
2065 $parameterCheckString .= " MessagePortArray messagePortArray$ TransferListName;\n"; 2077 $parameterCheckString .= " MessagePortArray messagePortArray$ TransferListName;\n";
2066 $parameterCheckString .= " ArrayBufferArray arrayBufferArray$ TransferListName;\n"; 2078 $parameterCheckString .= " ArrayBufferArray arrayBufferArray$ TransferListName;\n";
2067 $parameterCheckString .= " if (args.Length() > $transferListI ndex) {\n"; 2079 $parameterCheckString .= " if (args.Length() > $transferListI ndex) {\n";
2068 $parameterCheckString .= " if (!extractTransferables(args [$transferListIndex], messagePortArray$TransferListName, arrayBufferArray$Transf erListName, args.GetIsolate()))\n"; 2080 $parameterCheckString .= " if (!extractTransferables(args [$transferListIndex], messagePortArray$TransferListName, arrayBufferArray$Transf erListName, args.GetIsolate()))\n";
2069 $parameterCheckString .= " return throwTypeError(\"Co uld not extract transferables\", args.GetIsolate());\n"; 2081 $parameterCheckString .= " return throwTypeError(\"Co uld not extract transferables\", args.GetIsolate());\n";
2070 $parameterCheckString .= " }\n"; 2082 $parameterCheckString .= " }\n";
2071 $useTransferList = 1; 2083 $useTransferList = 1;
2072 } 2084 }
2073 $parameterCheckString .= " bool ${parameterName}DidThrow = false; \n"; 2085 $parameterCheckString .= " bool ${parameterName}DidThrow = false; \n";
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
2215 $code .= <<END; 2227 $code .= <<END;
2216 static v8::Handle<v8::Value> constructor${overloadedIndexString}(const v8::Argum ents& args) 2228 static v8::Handle<v8::Value> constructor${overloadedIndexString}(const v8::Argum ents& args)
2217 { 2229 {
2218 END 2230 END
2219 2231
2220 if ($function->{overloadedIndex} == 0) { 2232 if ($function->{overloadedIndex} == 0) {
2221 $code .= GenerateArgumentsCountCheck($function, $interface); 2233 $code .= GenerateArgumentsCountCheck($function, $interface);
2222 } 2234 }
2223 2235
2224 if ($raisesExceptions) { 2236 if ($raisesExceptions) {
2225 AddToImplIncludes("ExceptionCode.h"); 2237 AddToImplIncludes("core/dom/ExceptionCode.h");
2226 $code .= "\n"; 2238 $code .= "\n";
2227 $code .= " ExceptionCode ec = 0;\n"; 2239 $code .= " ExceptionCode ec = 0;\n";
2228 } 2240 }
2229 2241
2230 # FIXME: Currently [Constructor(...)] does not yet support optional argument s without [Default=...] 2242 # FIXME: Currently [Constructor(...)] does not yet support optional argument s without [Default=...]
2231 my ($parameterCheckString, $paramIndex, %replacements) = GenerateParametersC heck($function, $interfaceName, ""); 2243 my ($parameterCheckString, $paramIndex, %replacements) = GenerateParametersC heck($function, $interfaceName, "");
2232 $code .= $parameterCheckString; 2244 $code .= $parameterCheckString;
2233 2245
2234 if ($interface->extendedAttributes->{"CallWith"} && $interface->extendedAttr ibutes->{"CallWith"} eq "ScriptExecutionContext") { 2246 if ($interface->extendedAttributes->{"CallWith"} && $interface->extendedAttr ibutes->{"CallWith"} eq "ScriptExecutionContext") {
2235 push(@beforeArgumentList, "context"); 2247 push(@beforeArgumentList, "context");
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
2337 } 2349 }
2338 GenerateOverloadedConstructorCallback($interface); 2350 GenerateOverloadedConstructorCallback($interface);
2339 } 2351 }
2340 } 2352 }
2341 2353
2342 sub GenerateEventConstructor 2354 sub GenerateEventConstructor
2343 { 2355 {
2344 my $interface = shift; 2356 my $interface = shift;
2345 my $interfaceName = $interface->name; 2357 my $interfaceName = $interface->name;
2346 2358
2347 AddToImplIncludes("Dictionary.h"); 2359 AddToImplIncludes("bindings/v8/Dictionary.h");
2348 AddToImplContentInternals(<<END); 2360 AddToImplContentInternals(<<END);
2349 static v8::Handle<v8::Value> constructor(const v8::Arguments& args) 2361 static v8::Handle<v8::Value> constructor(const v8::Arguments& args)
2350 { 2362 {
2351 if (args.Length() < 1) 2363 if (args.Length() < 1)
2352 return throwNotEnoughArgumentsError(args.GetIsolate()); 2364 return throwNotEnoughArgumentsError(args.GetIsolate());
2353 2365
2354 V8TRYCATCH_FOR_V8STRINGRESOURCE(V8StringResource<>, type, args[0]); 2366 V8TRYCATCH_FOR_V8STRINGRESOURCE(V8StringResource<>, type, args[0]);
2355 ${interfaceName}Init eventInit; 2367 ${interfaceName}Init eventInit;
2356 if (args.Length() >= 2) { 2368 if (args.Length() >= 2) {
2357 V8TRYCATCH(Dictionary, options, Dictionary(args[1], args.GetIsolate())); 2369 V8TRYCATCH(Dictionary, options, Dictionary(args[1], args.GetIsolate()));
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
2396 END 2408 END
2397 AddToImplContent($code); 2409 AddToImplContent($code);
2398 } 2410 }
2399 2411
2400 sub GenerateTypedArrayConstructor 2412 sub GenerateTypedArrayConstructor
2401 { 2413 {
2402 my $interface = shift; 2414 my $interface = shift;
2403 my $interfaceName = $interface->name; 2415 my $interfaceName = $interface->name;
2404 my $viewType = GetTypeNameOfExternalTypedArray($interface); 2416 my $viewType = GetTypeNameOfExternalTypedArray($interface);
2405 my $type = $interface->extendedAttributes->{"TypedArray"}; 2417 my $type = $interface->extendedAttributes->{"TypedArray"};
2406 AddToImplIncludes("V8ArrayBufferViewCustom.h"); 2418 AddToImplIncludes("bindings/v8/custom/V8ArrayBufferViewCustom.h");
2407 2419
2408 AddToImplContentInternals(<<END); 2420 AddToImplContentInternals(<<END);
2409 static v8::Handle<v8::Value> constructor(const v8::Arguments& args) 2421 static v8::Handle<v8::Value> constructor(const v8::Arguments& args)
2410 { 2422 {
2411 return constructWebGLArray<$interfaceName, V8${interfaceName}, $type>(args, &V8${interfaceName}::info, $viewType); 2423 return constructWebGLArray<$interfaceName, V8${interfaceName}, $type>(args, &V8${interfaceName}::info, $viewType);
2412 } 2424 }
2413 2425
2414 END 2426 END
2415 } 2427 }
2416 2428
(...skipping 24 matching lines...) Expand all
2441 my $toActiveDOMObject = "0"; 2453 my $toActiveDOMObject = "0";
2442 if ($codeGenerator->InheritsExtendedAttribute($interface, "ActiveDOMObject") ) { 2454 if ($codeGenerator->InheritsExtendedAttribute($interface, "ActiveDOMObject") ) {
2443 $toActiveDOMObject = "${v8InterfaceName}::toActiveDOMObject"; 2455 $toActiveDOMObject = "${v8InterfaceName}::toActiveDOMObject";
2444 } 2456 }
2445 2457
2446 my $toEventTarget = "0"; 2458 my $toEventTarget = "0";
2447 if ($codeGenerator->InheritsExtendedAttribute($interface, "EventTarget")) { 2459 if ($codeGenerator->InheritsExtendedAttribute($interface, "EventTarget")) {
2448 $toEventTarget = "${v8InterfaceName}::toEventTarget"; 2460 $toEventTarget = "${v8InterfaceName}::toEventTarget";
2449 } 2461 }
2450 2462
2451 AddToImplIncludes("Frame.h"); 2463 AddToImplIncludes("core/page/Frame.h");
2452 AddToImplContent(<<END); 2464 AddToImplContent(<<END);
2453 WrapperTypeInfo ${v8InterfaceName}Constructor::info = { ${v8InterfaceName}Constr uctor::GetTemplate, ${v8InterfaceName}::derefObject, $toActiveDOMObject, $toEven tTarget, 0, ${v8InterfaceName}::installPerContextPrototypeProperties, 0, Wrapper TypeObjectPrototype }; 2465 WrapperTypeInfo ${v8InterfaceName}Constructor::info = { ${v8InterfaceName}Constr uctor::GetTemplate, ${v8InterfaceName}::derefObject, $toActiveDOMObject, $toEven tTarget, 0, ${v8InterfaceName}::installPerContextPrototypeProperties, 0, Wrapper TypeObjectPrototype };
2454 2466
2455 END 2467 END
2456 2468
2457 my $code = ""; 2469 my $code = "";
2458 $code .= <<END; 2470 $code .= <<END;
2459 static v8::Handle<v8::Value> ${v8InterfaceName}ConstructorCallback(const v8::Arg uments& args) 2471 static v8::Handle<v8::Value> ${v8InterfaceName}ConstructorCallback(const v8::Arg uments& args)
2460 { 2472 {
2461 ${maybeObserveFeature} 2473 ${maybeObserveFeature}
2462 END 2474 END
2463 $code .= GenerateConstructorHeader(); 2475 $code .= GenerateConstructorHeader();
2464 AddToImplIncludes("V8Document.h"); 2476 AddToImplIncludes("V8Document.h");
2465 $code .= <<END; 2477 $code .= <<END;
2466 Document* document = currentDocument(BindingState::instance()); 2478 Document* document = currentDocument(BindingState::instance());
2467 2479
2468 // Make sure the document is added to the DOM Node map. Otherwise, the ${int erfaceName} instance 2480 // Make sure the document is added to the DOM Node map. Otherwise, the ${int erfaceName} instance
2469 // may end up being the only node in the map and get garbage-collected prema turely. 2481 // may end up being the only node in the map and get garbage-collected prema turely.
2470 toV8(document, args.Holder(), args.GetIsolate()); 2482 toV8(document, args.Holder(), args.GetIsolate());
2471 2483
2472 END 2484 END
2473 2485
2474 $code .= GenerateArgumentsCountCheck($function, $interface); 2486 $code .= GenerateArgumentsCountCheck($function, $interface);
2475 2487
2476 if ($raisesExceptions) { 2488 if ($raisesExceptions) {
2477 AddToImplIncludes("ExceptionCode.h"); 2489 AddToImplIncludes("core/dom/ExceptionCode.h");
2478 $code .= "\n"; 2490 $code .= "\n";
2479 $code .= " ExceptionCode ec = 0;\n"; 2491 $code .= " ExceptionCode ec = 0;\n";
2480 } 2492 }
2481 2493
2482 my ($parameterCheckString, $paramIndex, %replacements) = GenerateParametersC heck($function, $interfaceName); 2494 my ($parameterCheckString, $paramIndex, %replacements) = GenerateParametersC heck($function, $interfaceName);
2483 $code .= $parameterCheckString; 2495 $code .= $parameterCheckString;
2484 2496
2485 push(@beforeArgumentList, "document"); 2497 push(@beforeArgumentList, "document");
2486 2498
2487 if ($interface->extendedAttributes->{"RaisesException"}) { 2499 if ($interface->extendedAttributes->{"RaisesException"}) {
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
2629 my $data = "0 /* no data */"; 2641 my $data = "0 /* no data */";
2630 2642
2631 # Constructor 2643 # Constructor
2632 if ($attribute->signature->type =~ /Constructor$/) { 2644 if ($attribute->signature->type =~ /Constructor$/) {
2633 my $constructorType = $attribute->signature->type; 2645 my $constructorType = $attribute->signature->type;
2634 $constructorType =~ s/Constructor$//; 2646 $constructorType =~ s/Constructor$//;
2635 # $constructorType ~= /Constructor$/ indicates that it is NamedConstruct or. 2647 # $constructorType ~= /Constructor$/ indicates that it is NamedConstruct or.
2636 # We do not generate the header file for NamedConstructor of class XXXX, 2648 # We do not generate the header file for NamedConstructor of class XXXX,
2637 # since we generate the NamedConstructor declaration into the header fil e of class XXXX. 2649 # since we generate the NamedConstructor declaration into the header fil e of class XXXX.
2638 if ($constructorType !~ /Constructor$/ || $attribute->signature->extende dAttributes->{"CustomConstructor"}) { 2650 if ($constructorType !~ /Constructor$/ || $attribute->signature->extende dAttributes->{"CustomConstructor"}) {
2639 AddToImplIncludes("V8${constructorType}.h", $attribute->signature->e xtendedAttributes->{"Conditional"}); 2651 my $includepath = "";
2652 if ($constructorType eq "HTMLImageElementConstructor") {
2653 $includepath = "bindings/v8/custom/";
2654 }
2655 AddToImplIncludes("${includepath}V8${constructorType}.h", $attribute ->signature->extendedAttributes->{"Conditional"});
2640 } 2656 }
2641 $data = "&V8${constructorType}::info"; 2657 $data = "&V8${constructorType}::info";
2642 $getter = "${interfaceName}V8Internal::${interfaceName}ConstructorGetter "; 2658 $getter = "${interfaceName}V8Internal::${interfaceName}ConstructorGetter ";
2643 $setter = "${interfaceName}V8Internal::${interfaceName}ReplaceableAttrSe tterCallback"; 2659 $setter = "${interfaceName}V8Internal::${interfaceName}ReplaceableAttrSe tterCallback";
2644 $getterForMainWorld = "0"; 2660 $getterForMainWorld = "0";
2645 $setterForMainWorld = "0"; 2661 $setterForMainWorld = "0";
2646 } else { 2662 } else {
2647 # Default Getter and Setter 2663 # Default Getter and Setter
2648 $getter = "${interfaceName}V8Internal::${attrName}AttrGetterCallback"; 2664 $getter = "${interfaceName}V8Internal::${attrName}AttrGetterCallback";
2649 $setter = "${interfaceName}V8Internal::${attrName}AttrSetterCallback"; 2665 $setter = "${interfaceName}V8Internal::${attrName}AttrSetterCallback";
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
2814 # FIXME: Find a way to not have to special-case HTMLOptionsCollection. 2830 # FIXME: Find a way to not have to special-case HTMLOptionsCollection.
2815 if ($interfaceName eq "HTMLOptionsCollection") { 2831 if ($interfaceName eq "HTMLOptionsCollection") {
2816 $hasEnumerator = 1; 2832 $hasEnumerator = 1;
2817 $hasIndexedGetter = 1; 2833 $hasIndexedGetter = 1;
2818 } 2834 }
2819 2835
2820 if (!$hasIndexedGetter) { 2836 if (!$hasIndexedGetter) {
2821 return ""; 2837 return "";
2822 } 2838 }
2823 2839
2824 AddToImplIncludes("V8Collection.h"); 2840 AddToImplIncludes("bindings/v8/V8Collection.h");
2825 2841
2826 if (!$indexer) { 2842 if (!$indexer) {
2827 $indexer = $codeGenerator->FindSuperMethod($interface, "item"); 2843 $indexer = $codeGenerator->FindSuperMethod($interface, "item");
2828 } 2844 }
2829 2845
2830 my $indexerType = $indexer ? $indexer->type : 0; 2846 my $indexerType = $indexer ? $indexer->type : 0;
2831 2847
2832 if ($indexerType && !$hasCustomIndexedSetter) { 2848 if ($indexerType && !$hasCustomIndexedSetter) {
2833 $hasEnumerator = 1; 2849 $hasEnumerator = 1;
2834 } 2850 }
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
2902 2918
2903 my $interfaceName = $interface->name; 2919 my $interfaceName = $interface->name;
2904 my $v8InterfaceName = "V8$interfaceName"; 2920 my $v8InterfaceName = "V8$interfaceName";
2905 2921
2906 if (!$namedPropertyGetter) { 2922 if (!$namedPropertyGetter) {
2907 $namedPropertyGetter = $codeGenerator->FindSuperMethod($interface, "name dItem"); 2923 $namedPropertyGetter = $codeGenerator->FindSuperMethod($interface, "name dItem");
2908 } 2924 }
2909 2925
2910 if ($interface->extendedAttributes->{"NamedGetter"}) { 2926 if ($interface->extendedAttributes->{"NamedGetter"}) {
2911 die "$interfaceName: [NamedGetter] but no namedItem() method." if (!$nam edPropertyGetter); 2927 die "$interfaceName: [NamedGetter] but no namedItem() method." if (!$nam edPropertyGetter);
2912 AddToImplIncludes("V8Collection.h"); 2928 AddToImplIncludes("bindings/v8/V8Collection.h");
2913 my $type = $namedPropertyGetter->type; 2929 my $type = $namedPropertyGetter->type;
2914 $subCode .= <<END; 2930 $subCode .= <<END;
2915 desc->InstanceTemplate()->SetNamedPropertyHandler(${v8InterfaceName}::namedP ropertyGetter, 0, 0, 0, 0); 2931 desc->InstanceTemplate()->SetNamedPropertyHandler(${v8InterfaceName}::namedP ropertyGetter, 0, 0, 0, 0);
2916 END 2932 END
2917 2933
2918 my $code .= <<END; 2934 my $code .= <<END;
2919 v8::Handle<v8::Value> ${v8InterfaceName}::namedPropertyGetter(v8::Local<v8::Stri ng> name, const v8::AccessorInfo& info) 2935 v8::Handle<v8::Value> ${v8InterfaceName}::namedPropertyGetter(v8::Local<v8::Stri ng> name, const v8::AccessorInfo& info)
2920 { 2936 {
2921 if (!info.Holder()->GetRealNamedPropertyInPrototypeChain(name).IsEmpty()) 2937 if (!info.Holder()->GetRealNamedPropertyInPrototypeChain(name).IsEmpty())
2922 return v8Undefined(); 2938 return v8Undefined();
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
3013 my $visibleInterfaceName = $codeGenerator->GetVisibleInterfaceName($interfac e); 3029 my $visibleInterfaceName = $codeGenerator->GetVisibleInterfaceName($interfac e);
3014 my $v8InterfaceName = "V8$interfaceName"; 3030 my $v8InterfaceName = "V8$interfaceName";
3015 my $nativeType = GetNativeTypeForConversions($interface); 3031 my $nativeType = GetNativeTypeForConversions($interface);
3016 my $vtableNameGnu = GetGnuVTableNameForInterface($interface); 3032 my $vtableNameGnu = GetGnuVTableNameForInterface($interface);
3017 my $vtableRefGnu = GetGnuVTableRefForInterface($interface); 3033 my $vtableRefGnu = GetGnuVTableRefForInterface($interface);
3018 my $vtableRefWin = GetWinVTableRefForInterface($interface); 3034 my $vtableRefWin = GetWinVTableRefForInterface($interface);
3019 3035
3020 # - Add default header template 3036 # - Add default header template
3021 push(@implContentHeader, GenerateImplementationContentHeader($interface)); 3037 push(@implContentHeader, GenerateImplementationContentHeader($interface));
3022 3038
3023 AddToImplIncludes("BindingState.h"); 3039 AddToImplIncludes("bindings/v8/BindingState.h");
3024 AddToImplIncludes("ContextFeatures.h"); 3040 AddToImplIncludes("core/dom/ContextFeatures.h");
3025 AddToImplIncludes("RuntimeEnabledFeatures.h"); 3041 AddToImplIncludes("core/page/RuntimeEnabledFeatures.h");
3026 AddToImplIncludes("V8Binding.h"); 3042 AddToImplIncludes("bindings/v8/V8Binding.h");
3027 AddToImplIncludes("V8DOMWrapper.h"); 3043 AddToImplIncludes("bindings/v8/V8DOMWrapper.h");
3028 3044
3029 AddIncludesForType($interfaceName); 3045 AddIncludesForType($interfaceName);
3030 3046
3031 my $toActiveDOMObject = $codeGenerator->InheritsExtendedAttribute($interface , "ActiveDOMObject") ? "${v8InterfaceName}::toActiveDOMObject" : "0"; 3047 my $toActiveDOMObject = $codeGenerator->InheritsExtendedAttribute($interface , "ActiveDOMObject") ? "${v8InterfaceName}::toActiveDOMObject" : "0";
3032 my $toEventTarget = $codeGenerator->InheritsExtendedAttribute($interface, "E ventTarget") ? "${v8InterfaceName}::toEventTarget" : "0"; 3048 my $toEventTarget = $codeGenerator->InheritsExtendedAttribute($interface, "E ventTarget") ? "${v8InterfaceName}::toEventTarget" : "0";
3033 my $rootForGC = NeedsCustomOpaqueRootForGC($interface) ? "${v8InterfaceName} ::opaqueRootForGC" : "0"; 3049 my $rootForGC = NeedsCustomOpaqueRootForGC($interface) ? "${v8InterfaceName} ::opaqueRootForGC" : "0";
3034 3050
3035 # Find the super descriptor. 3051 # Find the super descriptor.
3036 my $parentClass = ""; 3052 my $parentClass = "";
3037 my $parentClassTemplate = ""; 3053 my $parentClassTemplate = "";
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
3133 $hasConstructors = 1; 3149 $hasConstructors = 1;
3134 } 3150 }
3135 next; 3151 next;
3136 } 3152 }
3137 3153
3138 if ($attrType eq "EventListener" && $interfaceName eq "DOMWindow") { 3154 if ($attrType eq "EventListener" && $interfaceName eq "DOMWindow") {
3139 $attrExt->{"OnProto"} = 1; 3155 $attrExt->{"OnProto"} = 1;
3140 } 3156 }
3141 3157
3142 if ($attrType eq "SerializedScriptValue") { 3158 if ($attrType eq "SerializedScriptValue") {
3143 AddToImplIncludes("SerializedScriptValue.h"); 3159 AddToImplIncludes("bindings/v8/SerializedScriptValue.h");
3144 } 3160 }
3145 3161
3146 GenerateNormalAttrGetter($attribute, $interface, ""); 3162 GenerateNormalAttrGetter($attribute, $interface, "");
3147 GenerateNormalAttrGetterCallback($attribute, $interface, ""); 3163 GenerateNormalAttrGetterCallback($attribute, $interface, "");
3148 if ($attrExt->{"PerWorldBindings"}) { 3164 if ($attrExt->{"PerWorldBindings"}) {
3149 GenerateNormalAttrGetter($attribute, $interface, "ForMainWorld"); 3165 GenerateNormalAttrGetter($attribute, $interface, "ForMainWorld");
3150 GenerateNormalAttrGetterCallback($attribute, $interface, "ForMainWor ld"); 3166 GenerateNormalAttrGetterCallback($attribute, $interface, "ForMainWor ld");
3151 } 3167 }
3152 if (!HasCustomSetter($attrExt) && $attrExt->{"Replaceable"}) { 3168 if (!HasCustomSetter($attrExt) && $attrExt->{"Replaceable"}) {
3153 $hasReplaceable = 1; 3169 $hasReplaceable = 1;
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
3326 $has_constants = 1; 3342 $has_constants = 1;
3327 $code .= "static const V8DOMConfiguration::BatchedConstant ${v8Interface Name}Consts[] = {\n"; 3343 $code .= "static const V8DOMConfiguration::BatchedConstant ${v8Interface Name}Consts[] = {\n";
3328 } 3344 }
3329 foreach my $constant (@{$interface->constants}) { 3345 foreach my $constant (@{$interface->constants}) {
3330 my $name = $constant->name; 3346 my $name = $constant->name;
3331 my $value = $constant->value; 3347 my $value = $constant->value;
3332 my $attrExt = $constant->extendedAttributes; 3348 my $attrExt = $constant->extendedAttributes;
3333 my $conditional = $attrExt->{"Conditional"}; 3349 my $conditional = $attrExt->{"Conditional"};
3334 my $implementedBy = $attrExt->{"ImplementedBy"}; 3350 my $implementedBy = $attrExt->{"ImplementedBy"};
3335 if ($implementedBy) { 3351 if ($implementedBy) {
3336 AddToImplIncludes("${implementedBy}.h"); 3352 my $implementedByPath = idlToPath($implementedBy);
3353 AddToImplIncludes("${implementedByPath}${implementedBy}.h");
3337 } 3354 }
3338 if ($attrExt->{"EnabledAtRuntime"}) { 3355 if ($attrExt->{"EnabledAtRuntime"}) {
3339 push(@constantsEnabledAtRuntime, $constant); 3356 push(@constantsEnabledAtRuntime, $constant);
3340 } else { 3357 } else {
3341 if ($conditional) { 3358 if ($conditional) {
3342 my $conditionalString = $codeGenerator->GenerateConditionalStrin gFromAttributeValue($conditional); 3359 my $conditionalString = $codeGenerator->GenerateConditionalStrin gFromAttributeValue($conditional);
3343 $code .= "#if ${conditionalString}\n"; 3360 $code .= "#if ${conditionalString}\n";
3344 } 3361 }
3345 # If the value we're dealing with is a hex number, preprocess it int o a signed integer 3362 # If the value we're dealing with is a hex number, preprocess it int o a signed integer
3346 # here, rather than running static_cast<signed int> in the generated code. 3363 # here, rather than running static_cast<signed int> in the generated code.
(...skipping 414 matching lines...) Expand 10 before | Expand all | Expand 10 after
3761 my $interface = shift; 3778 my $interface = shift;
3762 3779
3763 my $interfaceName = $interface->name; 3780 my $interfaceName = $interface->name;
3764 my $v8InterfaceName = "V8$interfaceName"; 3781 my $v8InterfaceName = "V8$interfaceName";
3765 3782
3766 3783
3767 # - Add default header template 3784 # - Add default header template
3768 AddToHeader(GenerateHeaderContentHeader($interface)); 3785 AddToHeader(GenerateHeaderContentHeader($interface));
3769 3786
3770 my @unsortedIncludes = (); 3787 my @unsortedIncludes = ();
3771 push(@unsortedIncludes, "#include \"ActiveDOMCallback.h\""); 3788 push(@unsortedIncludes, "#include \"bindings/v8/ActiveDOMCallback.h\"");
3772 push(@unsortedIncludes, "#include \"DOMWrapperWorld.h\""); 3789 push(@unsortedIncludes, "#include \"bindings/v8/DOMWrapperWorld.h\"");
3773 push(@unsortedIncludes, "#include \"$interfaceName.h\""); 3790 my $interfacePath = idlToPath($interfaceName);
3774 push(@unsortedIncludes, "#include \"ScopedPersistent.h\""); 3791 push(@unsortedIncludes, "#include \"$interfacePath$interfaceName.h\"");
3792 push(@unsortedIncludes, "#include \"bindings/v8/ScopedPersistent.h\"");
3775 push(@unsortedIncludes, "#include <v8.h>"); 3793 push(@unsortedIncludes, "#include <v8.h>");
3776 push(@unsortedIncludes, "#include <wtf/Forward.h>"); 3794 push(@unsortedIncludes, "#include <wtf/Forward.h>");
3777 AddToHeader(join("\n", sort @unsortedIncludes)); 3795 AddToHeader(join("\n", sort @unsortedIncludes));
3778 3796
3779 AddToHeader("\n\nnamespace WebCore {\n\n"); 3797 AddToHeader("\n\nnamespace WebCore {\n\n");
3780 AddToHeader("class ScriptExecutionContext;\n\n"); 3798 AddToHeader("class ScriptExecutionContext;\n\n");
3781 AddToHeader("class $v8InterfaceName : public $interfaceName, public ActiveDO MCallback {\n"); 3799 AddToHeader("class $v8InterfaceName : public $interfaceName, public ActiveDO MCallback {\n");
3782 3800
3783 AddToHeader(<<END); 3801 AddToHeader(<<END);
3784 public: 3802 public:
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
3838 sub GenerateCallbackImplementation 3856 sub GenerateCallbackImplementation
3839 { 3857 {
3840 my $object = shift; 3858 my $object = shift;
3841 my $interface = shift; 3859 my $interface = shift;
3842 my $interfaceName = $interface->name; 3860 my $interfaceName = $interface->name;
3843 my $v8InterfaceName = "V8$interfaceName"; 3861 my $v8InterfaceName = "V8$interfaceName";
3844 3862
3845 # - Add default header template 3863 # - Add default header template
3846 push(@implContentHeader, GenerateImplementationContentHeader($interface)); 3864 push(@implContentHeader, GenerateImplementationContentHeader($interface));
3847 3865
3848 AddToImplIncludes("ScriptExecutionContext.h"); 3866 AddToImplIncludes("core/dom/ScriptExecutionContext.h");
3849 AddToImplIncludes("V8Binding.h"); 3867 AddToImplIncludes("bindings/v8/V8Binding.h");
3850 AddToImplIncludes("V8Callback.h"); 3868 AddToImplIncludes("bindings/v8/V8Callback.h");
3851 3869
3852 AddToImplContent("#include <wtf/Assertions.h>\n\n"); 3870 AddToImplContent("#include <wtf/Assertions.h>\n\n");
3853 AddToImplContent("namespace WebCore {\n\n"); 3871 AddToImplContent("namespace WebCore {\n\n");
3854 3872
3855 AddToImplContent(<<END); 3873 AddToImplContent(<<END);
3856 ${v8InterfaceName}::${v8InterfaceName}(v8::Handle<v8::Object> callback, ScriptEx ecutionContext* context) 3874 ${v8InterfaceName}::${v8InterfaceName}(v8::Handle<v8::Object> callback, ScriptEx ecutionContext* context)
3857 : ActiveDOMCallback(context) 3875 : ActiveDOMCallback(context)
3858 , m_callback(callback) 3876 , m_callback(callback)
3859 , m_world(DOMWrapperWorld::current()) 3877 , m_world(DOMWrapperWorld::current())
3860 { 3878 {
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
3951 { 3969 {
3952 my $interface = shift; 3970 my $interface = shift;
3953 my $v8InterfaceName = shift; 3971 my $v8InterfaceName = shift;
3954 my $nativeType = shift; 3972 my $nativeType = shift;
3955 my $interfaceName = $interface->name; 3973 my $interfaceName = $interface->name;
3956 3974
3957 if ($interface->extendedAttributes->{"NoWrapperCache"} || $interface->extend edAttributes->{"SuppressToJSObject"}) { 3975 if ($interface->extendedAttributes->{"NoWrapperCache"} || $interface->extend edAttributes->{"SuppressToJSObject"}) {
3958 return; 3976 return;
3959 } 3977 }
3960 3978
3961 AddToImplIncludes("Frame.h"); 3979 AddToImplIncludes("core/page/Frame.h");
3962 AddToImplIncludes("ScriptController.h"); 3980 AddToImplIncludes("ScriptController.h");
3963 3981
3964 my $createWrapperArgumentType = GetPassRefPtrType($nativeType); 3982 my $createWrapperArgumentType = GetPassRefPtrType($nativeType);
3965 my $baseType = BaseInterfaceName($interface); 3983 my $baseType = BaseInterfaceName($interface);
3966 3984
3967 my $code = ""; 3985 my $code = "";
3968 $code .= <<END; 3986 $code .= <<END;
3969 3987
3970 v8::Handle<v8::Object> ${v8InterfaceName}::createWrapper(${createWrapperArgument Type} impl, v8::Handle<v8::Object> creationContext, v8::Isolate* isolate) 3988 v8::Handle<v8::Object> ${v8InterfaceName}::createWrapper(${createWrapperArgument Type} impl, v8::Handle<v8::Object> creationContext, v8::Isolate* isolate)
3971 { 3989 {
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
4177 if ($function->signature->extendedAttributes->{"ImplementedAs"}) { 4195 if ($function->signature->extendedAttributes->{"ImplementedAs"}) {
4178 $name = $function->signature->extendedAttributes->{"ImplementedAs"}; 4196 $name = $function->signature->extendedAttributes->{"ImplementedAs"};
4179 } 4197 }
4180 4198
4181 my $index = 0; 4199 my $index = 0;
4182 4200
4183 my @arguments; 4201 my @arguments;
4184 my $functionName; 4202 my $functionName;
4185 my $implementedBy = $function->signature->extendedAttributes->{"ImplementedB y"}; 4203 my $implementedBy = $function->signature->extendedAttributes->{"ImplementedB y"};
4186 if ($implementedBy) { 4204 if ($implementedBy) {
4187 AddToImplIncludes("${implementedBy}.h"); 4205 my $implementedByPath = idlToPath($implementedBy);
4206 AddToImplIncludes("${implementedByPath}${implementedBy}.h");
4188 unshift(@arguments, "imp") if !$function->isStatic; 4207 unshift(@arguments, "imp") if !$function->isStatic;
4189 $functionName = "${implementedBy}::${name}"; 4208 $functionName = "${implementedBy}::${name}";
4190 } elsif ($function->isStatic) { 4209 } elsif ($function->isStatic) {
4191 $functionName = "${interfaceName}::${name}"; 4210 $functionName = "${interfaceName}::${name}";
4192 } else { 4211 } else {
4193 $functionName = "imp->${name}"; 4212 $functionName = "imp->${name}";
4194 } 4213 }
4195 4214
4196 my $callWith = $function->signature->extendedAttributes->{"CallWith"}; 4215 my $callWith = $function->signature->extendedAttributes->{"CallWith"};
4197 my ($callWithArgs, $subCode) = GenerateCallWith($callWith, $indent, 0, $func tion); 4216 my ($callWithArgs, $subCode) = GenerateCallWith($callWith, $indent, 0, $func tion);
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
4254 if ($codeGenerator->ExtendedAttributeContains($callWith, "ScriptState")) { 4273 if ($codeGenerator->ExtendedAttributeContains($callWith, "ScriptState")) {
4255 $code .= $indent . "if (state.hadException()) {\n"; 4274 $code .= $indent . "if (state.hadException()) {\n";
4256 $code .= $indent . " v8::Local<v8::Value> exception = state.exception ();\n"; 4275 $code .= $indent . " v8::Local<v8::Value> exception = state.exception ();\n";
4257 $code .= $indent . " state.clearException();\n"; 4276 $code .= $indent . " state.clearException();\n";
4258 $code .= $indent . " return throwError(exception, args.GetIsolate()); \n"; 4277 $code .= $indent . " return throwError(exception, args.GetIsolate()); \n";
4259 $code .= $indent . "}\n"; 4278 $code .= $indent . "}\n";
4260 } 4279 }
4261 4280
4262 if ($isSVGTearOffType) { 4281 if ($isSVGTearOffType) {
4263 AddToImplIncludes("V8$returnType.h"); 4282 AddToImplIncludes("V8$returnType.h");
4264 AddToImplIncludes("SVGPropertyTearOff.h"); 4283 AddToImplIncludes("core/svg/properties/SVGPropertyTearOff.h");
4265 my $svgNativeType = $codeGenerator->GetSVGTypeNeedingTearOff($returnType ); 4284 my $svgNativeType = $codeGenerator->GetSVGTypeNeedingTearOff($returnType );
4266 # FIXME: Update for all ScriptWrappables. 4285 # FIXME: Update for all ScriptWrappables.
4267 if (IsDOMNodeType($interfaceName)) { 4286 if (IsDOMNodeType($interfaceName)) {
4268 $code .= $indent . "return toV8Fast${forMainWorldSuffix}(WTF::getPtr (${svgNativeType}::create($return)), args, imp);\n"; 4287 $code .= $indent . "return toV8Fast${forMainWorldSuffix}(WTF::getPtr (${svgNativeType}::create($return)), args, imp);\n";
4269 } else { 4288 } else {
4270 $code .= $indent . "return toV8${forMainWorldSuffix}(WTF::getPtr(${s vgNativeType}::create($return)), args.Holder(), args.GetIsolate());\n"; 4289 $code .= $indent . "return toV8${forMainWorldSuffix}(WTF::getPtr(${s vgNativeType}::create($return)), args.Holder(), args.GetIsolate());\n";
4271 } 4290 }
4272 return $code; 4291 return $code;
4273 } 4292 }
4274 4293
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
4382 4401
4383 # Callbacks use raw pointers, so pass isParameter = 1 4402 # Callbacks use raw pointers, so pass isParameter = 1
4384 return GetNativeType($type, 1); 4403 return GetNativeType($type, 1);
4385 } 4404 }
4386 4405
4387 sub TypeCanFailConversion 4406 sub TypeCanFailConversion
4388 { 4407 {
4389 my $signature = shift; 4408 my $signature = shift;
4390 my $type = $signature->type; 4409 my $type = $signature->type;
4391 4410
4392 AddToImplIncludes("ExceptionCode.h") if $type eq "Attr"; 4411 AddToImplIncludes("core/dom/ExceptionCode.h") if $type eq "Attr";
4393 return 1 if $type eq "Attr"; 4412 return 1 if $type eq "Attr";
4394 return 0; 4413 return 0;
4395 } 4414 }
4396 4415
4397 sub JSValueToNative 4416 sub JSValueToNative
4398 { 4417 {
4399 my $signature = shift; 4418 my $signature = shift;
4400 my $value = shift; 4419 my $value = shift;
4401 my $getIsolate = shift; 4420 my $getIsolate = shift;
4402 4421
(...skipping 21 matching lines...) Expand all
4424 4443
4425 if ($type eq "DOMString") { 4444 if ($type eq "DOMString") {
4426 return $value; 4445 return $value;
4427 } 4446 }
4428 4447
4429 if ($codeGenerator->IsEnumType($type)) { 4448 if ($codeGenerator->IsEnumType($type)) {
4430 return $value; 4449 return $value;
4431 } 4450 }
4432 4451
4433 if ($type eq "SerializedScriptValue") { 4452 if ($type eq "SerializedScriptValue") {
4434 AddToImplIncludes("SerializedScriptValue.h"); 4453 AddToImplIncludes("bindings/v8/SerializedScriptValue.h");
4435 return "SerializedScriptValue::create($value, $getIsolate)"; 4454 return "SerializedScriptValue::create($value, $getIsolate)";
4436 } 4455 }
4437 4456
4438 if ($type eq "Dictionary") { 4457 if ($type eq "Dictionary") {
4439 AddToImplIncludes("Dictionary.h"); 4458 AddToImplIncludes("bindings/v8/Dictionary.h");
4440 return "Dictionary($value, $getIsolate)"; 4459 return "Dictionary($value, $getIsolate)";
4441 } 4460 }
4442 4461
4443 if ($type eq "any") { 4462 if ($type eq "any") {
4444 AddToImplIncludes("ScriptValue.h"); 4463 AddToImplIncludes("bindings/v8/ScriptValue.h");
4445 return "ScriptValue($value)"; 4464 return "ScriptValue($value)";
4446 } 4465 }
4447 4466
4448 if ($type eq "NodeFilter") { 4467 if ($type eq "NodeFilter") {
4449 return "toNodeFilter($value)"; 4468 return "toNodeFilter($value)";
4450 } 4469 }
4451 4470
4452 if ($type eq "MediaQueryListListener") { 4471 if ($type eq "MediaQueryListListener") {
4453 AddToImplIncludes("MediaQueryListListener.h"); 4472 AddToImplIncludes("core/css/MediaQueryListListener.h");
4454 return "MediaQueryListListener::create(" . $value . ")"; 4473 return "MediaQueryListListener::create(" . $value . ")";
4455 } 4474 }
4456 4475
4457 if ($type eq "EventTarget") { 4476 if ($type eq "EventTarget") {
4458 return "V8DOMWrapper::isDOMWrapper($value) ? toWrapperTypeInfo(v8::Handl e<v8::Object>::Cast($value))->toEventTarget(v8::Handle<v8::Object>::Cast($value) ) : 0"; 4477 return "V8DOMWrapper::isDOMWrapper($value) ? toWrapperTypeInfo(v8::Handl e<v8::Object>::Cast($value))->toEventTarget(v8::Handle<v8::Object>::Cast($value) ) : 0";
4459 } 4478 }
4460 4479
4461 if ($type eq "XPathNSResolver") { 4480 if ($type eq "XPathNSResolver") {
4462 return "toXPathNSResolver($value, $getIsolate)"; 4481 return "toXPathNSResolver($value, $getIsolate)";
4463 } 4482 }
(...skipping 13 matching lines...) Expand all
4477 AddIncludesForType($type); 4496 AddIncludesForType($type);
4478 4497
4479 AddToImplIncludes("V8${type}.h"); 4498 AddToImplIncludes("V8${type}.h");
4480 return "V8${type}::HasInstance($value, $getIsolate, worldType($getIsolate)) ? V8${type}::toNative(v8::Handle<v8::Object>::Cast($value)) : 0"; 4499 return "V8${type}::HasInstance($value, $getIsolate, worldType($getIsolate)) ? V8${type}::toNative(v8::Handle<v8::Object>::Cast($value)) : 0";
4481 } 4500 }
4482 4501
4483 sub GetV8HeaderName 4502 sub GetV8HeaderName
4484 { 4503 {
4485 my $type = shift; 4504 my $type = shift;
4486 return "V8Event.h" if $type eq "DOMTimeStamp"; 4505 return "V8Event.h" if $type eq "DOMTimeStamp";
4487 return "EventListener.h" if $type eq "EventListener"; 4506 return "core/dom/EventListener.h" if $type eq "EventListener";
4488 return "SerializedScriptValue.h" if $type eq "SerializedScriptValue"; 4507 return "bindings/v8/SerializedScriptValue.h" if $type eq "SerializedScriptVa lue";
4489 return "ScriptValue.h" if $type eq "any"; 4508 return "bindings/v8/ScriptValue.h" if $type eq "any";
4509 return "bindings/v8/V8GCController.h" if $type eq "GCController";
4490 return "V8${type}.h"; 4510 return "V8${type}.h";
4491 } 4511 }
4492 4512
4493 sub CreateCustomSignature 4513 sub CreateCustomSignature
4494 { 4514 {
4495 my $function = shift; 4515 my $function = shift;
4496 my $count = @{$function->parameters}; 4516 my $count = @{$function->parameters};
4497 my $name = $function->signature->name; 4517 my $name = $function->signature->name;
4498 my $code = " const int ${name}Argc = ${count};\n" . 4518 my $code = " const int ${name}Argc = ${count};\n" .
4499 " v8::Handle<v8::FunctionTemplate> ${name}Argv[${name}Argc] = { "; 4519 " v8::Handle<v8::FunctionTemplate> ${name}Argv[${name}Argc] = { ";
4500 my $first = 1; 4520 my $first = 1;
4501 foreach my $parameter (@{$function->parameters}) { 4521 foreach my $parameter (@{$function->parameters}) {
4502 if ($first) { $first = 0; } 4522 if ($first) { $first = 0; }
4503 else { $code .= ", "; } 4523 else { $code .= ", "; }
4504 if (IsWrapperType($parameter->type)) { 4524 if (IsWrapperType($parameter->type)) {
4505 if ($parameter->type eq "XPathNSResolver") { 4525 if ($parameter->type eq "XPathNSResolver") {
4506 # Special case for XPathNSResolver. All other browsers accepts a callable, 4526 # Special case for XPathNSResolver. All other browsers accepts a callable,
4507 # so, even though it's against IDL, accept objects here. 4527 # so, even though it's against IDL, accept objects here.
4508 $code .= "v8::Handle<v8::FunctionTemplate>()"; 4528 $code .= "v8::Handle<v8::FunctionTemplate>()";
4509 } else { 4529 } else {
4510 my $type = $parameter->type; 4530 my $type = $parameter->type;
4511 4531
4512 my $arrayType = $codeGenerator->GetArrayType($type); 4532 my $arrayType = $codeGenerator->GetArrayType($type);
4513 my $sequenceType = $codeGenerator->GetSequenceType($type); 4533 my $sequenceType = $codeGenerator->GetSequenceType($type);
4514 my $arrayOrSequenceType = $arrayType || $sequenceType; 4534 my $arrayOrSequenceType = $arrayType || $sequenceType;
4515 4535
4516 if ($arrayOrSequenceType) { 4536 if ($arrayOrSequenceType) {
4517 if ($arrayType eq "DOMString") { 4537 if ($arrayType eq "DOMString") {
4518 AddToImplIncludes("V8DOMStringList.h"); 4538 AddToImplIncludes("V8DOMStringList.h");
4519 AddToImplIncludes("DOMStringList.h"); 4539 AddToImplIncludes("core/dom/DOMStringList.h");
4520 4540
4521 } elsif ($codeGenerator->IsRefPtrType($arrayOrSequenceType)) { 4541 } elsif ($codeGenerator->IsRefPtrType($arrayOrSequenceType)) {
4522 AddToImplIncludes(GetV8HeaderName($arrayOrSequenceType)) ; 4542 AddToImplIncludes(GetV8HeaderName($arrayOrSequenceType)) ;
4523 AddToImplIncludes("${arrayOrSequenceType}.h"); 4543 AddToImplIncludes("${arrayOrSequenceType}.h");
4524 } else { 4544 } else {
4525 $code .= "v8::Handle<v8::FunctionTemplate>()"; 4545 $code .= "v8::Handle<v8::FunctionTemplate>()";
4526 next; 4546 next;
4527 } 4547 }
4528 } else { 4548 } else {
4529 AddToImplIncludes(GetV8HeaderName($type)); 4549 AddToImplIncludes(GetV8HeaderName($type));
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
4710 return "v8String($value, $getIsolate$returnHandleTypeArg)"; 4730 return "v8String($value, $getIsolate$returnHandleTypeArg)";
4711 } 4731 }
4712 4732
4713 my $arrayType = $codeGenerator->GetArrayType($type); 4733 my $arrayType = $codeGenerator->GetArrayType($type);
4714 my $sequenceType = $codeGenerator->GetSequenceType($type); 4734 my $sequenceType = $codeGenerator->GetSequenceType($type);
4715 my $arrayOrSequenceType = $arrayType || $sequenceType; 4735 my $arrayOrSequenceType = $arrayType || $sequenceType;
4716 4736
4717 if ($arrayOrSequenceType) { 4737 if ($arrayOrSequenceType) {
4718 if ($arrayType eq "DOMString") { 4738 if ($arrayType eq "DOMString") {
4719 AddToImplIncludes("V8DOMStringList.h"); 4739 AddToImplIncludes("V8DOMStringList.h");
4720 AddToImplIncludes("DOMStringList.h"); 4740 AddToImplIncludes("core/dom/DOMStringList.h");
4721 4741
4722 } elsif ($codeGenerator->IsRefPtrType($arrayOrSequenceType)) { 4742 } elsif ($codeGenerator->IsRefPtrType($arrayOrSequenceType)) {
4723 AddToImplIncludes(GetV8HeaderName($arrayOrSequenceType)); 4743 AddToImplIncludes(GetV8HeaderName($arrayOrSequenceType));
4724 AddToImplIncludes("${arrayOrSequenceType}.h"); 4744 my $includepath = idlToPath($arrayOrSequenceType); # This is not an arraytype (always?). It's things like ScriptProfileNode, MediaStreamTream, Media StreamTream, MediaStream.
4745 AddToImplIncludes("${includepath}${arrayOrSequenceType}.h");
4725 } 4746 }
4726 return "v8Array($value, $getIsolate)"; 4747 return "v8Array($value, $getIsolate)";
4727 } 4748 }
4728 4749
4729 AddIncludesForType($type); 4750 AddIncludesForType($type);
4730 4751
4731 if (IsDOMNodeType($type) || $type eq "EventTarget") { 4752 if (IsDOMNodeType($type) || $type eq "EventTarget") {
4732 if ($getScriptWrappable) { 4753 if ($getScriptWrappable) {
4733 return "toV8Fast${forMainWorldSuffix}($value$getHolderContainerArg$get ScriptWrappableArg)"; 4754 return "toV8Fast${forMainWorldSuffix}($value$getHolderContainerArg$get ScriptWrappableArg)";
4734 } 4755 }
4735 return "toV8($value, $getCreationContext, $getIsolate)"; 4756 return "toV8($value, $getCreationContext, $getIsolate)";
4736 } 4757 }
4737 4758
4738 if ($type eq "EventListener") { 4759 if ($type eq "EventListener") {
4739 AddToImplIncludes("V8AbstractEventListener.h"); 4760 AddToImplIncludes("bindings/v8/V8AbstractEventListener.h");
4740 return "${value} ? v8::Handle<v8::Value>(static_cast<V8AbstractEventList ener*>(${value})->getListenerObject(imp->scriptExecutionContext())) : v8::Handle <v8::Value>(v8Null($getIsolate))"; 4761 return "${value} ? v8::Handle<v8::Value>(static_cast<V8AbstractEventList ener*>(${value})->getListenerObject(imp->scriptExecutionContext())) : v8::Handle <v8::Value>(v8Null($getIsolate))";
4741 } 4762 }
4742 4763
4743 if ($type eq "SerializedScriptValue") { 4764 if ($type eq "SerializedScriptValue") {
4744 AddToImplIncludes("$type.h"); 4765 AddToImplIncludes("$type.h");
4745 return "$value ? $value->deserialize() : v8::Handle<v8::Value>(v8Null($g etIsolate))"; 4766 return "$value ? $value->deserialize() : v8::Handle<v8::Value>(v8Null($g etIsolate))";
4746 } 4767 }
4747 4768
4748 AddToImplIncludes("wtf/RefCounted.h"); 4769 AddToImplIncludes("wtf/RefCounted.h");
4749 AddToImplIncludes("wtf/RefPtr.h"); 4770 AddToImplIncludes("wtf/RefPtr.h");
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
4861 4882
4862 sub GetPassRefPtrType 4883 sub GetPassRefPtrType
4863 { 4884 {
4864 my $v8InterfaceName = shift; 4885 my $v8InterfaceName = shift;
4865 4886
4866 my $angleBracketSpace = $v8InterfaceName =~ />$/ ? " " : ""; 4887 my $angleBracketSpace = $v8InterfaceName =~ />$/ ? " " : "";
4867 return "PassRefPtr<${v8InterfaceName}${angleBracketSpace}>"; 4888 return "PassRefPtr<${v8InterfaceName}${angleBracketSpace}>";
4868 } 4889 }
4869 4890
4870 1; 4891 1;
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698